--- /dev/null	Tue Apr 22 05:37:41 2014
+++ new/usr/src/cmd/dtrace/test/tst/common/types/err.D_DECL_COMBO.rptdattr1.d	Tue Apr 22 05:37:41 2014
@@ -0,0 +1,43 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * Copyright (c) 2013, 2014 by Delphix. All rights reserved.
+ */
+
+/*
+ * ASSERTION:
+ *      Short can be used at most once.
+ *
+ * SECTION: Types, Operators, and Expressions/Data Types and Sizes
+ */
+
+
+BEGIN
+{
+	trace((short short int)arg0);
+	exit(0);
+}
--- /dev/null	Tue Apr 22 05:37:41 2014
+++ new/usr/src/cmd/dtrace/test/tst/common/types/err.D_DECL_COMBO.rptdattr2.d	Tue Apr 22 05:37:41 2014
@@ -0,0 +1,43 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * Copyright (c) 2013, 2014 by Delphix. All rights reserved.
+ */
+
+/*
+ * ASSERTION:
+ *      Signed can be used at most once.
+ *
+ * SECTION: Types, Operators, and Expressions/Data Types and Sizes
+ */
+
+
+BEGIN
+{
+	trace((signed signed int)arg0);
+	exit(0);
+}
--- /dev/null	Tue Apr 22 05:37:41 2014
+++ new/usr/src/cmd/dtrace/test/tst/common/types/err.D_DECL_COMBO.rptdattr3.d	Tue Apr 22 05:37:41 2014
@@ -0,0 +1,43 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * Copyright (c) 2013, 2014 by Delphix. All rights reserved.
+ */
+
+/*
+ * ASSERTION:
+ *      Unsigned can be used at most once.
+ *
+ * SECTION: Types, Operators, and Expressions/Data Types and Sizes
+ */
+
+
+BEGIN
+{
+	trace((unsigned unsigned int)arg0);
+	exit(0);
+}
--- /dev/null	Tue Apr 22 05:37:41 2014
+++ new/usr/src/cmd/dtrace/test/tst/common/types/err.D_DECL_COMBO.rptdattr4.d	Tue Apr 22 05:37:41 2014
@@ -0,0 +1,43 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * Copyright (c) 2014 by Delphix. All rights reserved.
+ */
+
+/*
+ * ASSERTION:
+ *	Long can only be used at most twice
+ *
+ * SECTION: Types, Operators, and Expressions/Data Types and Sizes
+ */
+
+
+BEGIN
+{
+	trace((long long long int)arg0);
+	exit(0);
+}
--- /dev/null	Tue Apr 22 05:37:41 2014
+++ new/usr/src/cmd/dtrace/test/tst/common/types/err.D_DECL_COMBO.rptdattr5.d	Tue Apr 22 05:37:41 2014
@@ -0,0 +1,43 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * Copyright (c) 2013, 2014 by Delphix. All rights reserved.
+ */
+
+/*
+ * ASSERTION:
+ *	Long can only be used at most twice
+ *
+ * SECTION: Types, Operators, and Expressions/Data Types and Sizes
+ */
+
+
+BEGIN
+{
+	trace((long long long long int)arg0);
+	exit(0);
+}
--- /dev/null	Tue Apr 22 05:37:41 2014
+++ new/usr/src/cmd/dtrace/test/tst/common/types/err.EDT_NOTYPE.cmbdatt1.d	Tue Apr 22 05:37:41 2014
@@ -0,0 +1,43 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * Copyright (c) 2013, 2014 by Delphix. All rights reserved.
+ */
+
+/*
+ * ASSERTION:
+ *	Long and short attributes can't be used together
+ *
+ * SECTION: Types, Operators, and Expressions/Data Types and Sizes
+ */
+
+
+BEGIN
+{
+	trace((long short int)arg0);
+	exit(0);
+}
--- /dev/null	Tue Apr 22 05:37:41 2014
+++ new/usr/src/cmd/dtrace/test/tst/common/types/err.EDT_NOTYPE.cmbdatt2.d	Tue Apr 22 05:37:41 2014
@@ -0,0 +1,43 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * Copyright (c) 2013, 2014 by Delphix. All rights reserved.
+ */
+
+/*
+ * ASSERTION:
+ *      Signed and unsigned attributes can't be used together
+ *
+ * SECTION: Types, Operators, and Expressions/Data Types and Sizes
+ */
+
+
+BEGIN
+{
+	trace((signed unsigned int)arg0);
+	exit(0);
+}
--- old/usr/src/cmd/ndmpd/ndmp/ndmpd_mover.c	Tue Apr 22 05:37:41 2014
+++ new/usr/src/cmd/ndmpd/ndmp/ndmpd_mover.c	Tue Apr 22 05:37:41 2014
@@ -763,6 +763,8 @@
 	(void) mutex_lock(&nlp->nlp_mtx);
 	session->ns_mover.md_state = NDMP_MOVER_STATE_ACTIVE;
 	session->ns_mover.md_pause_reason = NDMP_MOVER_PAUSE_NA;
+	/* The tape has been likely exchanged, reset tape block counter */
+	session->ns_tape.td_record_count = 0;
 	(void) cond_broadcast(&nlp->nlp_cv);
 	(void) mutex_unlock(&nlp->nlp_mtx);
 
--- old/usr/src/cmd/ndmpd/ndmp/ndmpd_util.c	Tue Apr 22 05:37:41 2014
+++ new/usr/src/cmd/ndmpd/ndmp/ndmpd_util.c	Tue Apr 22 05:37:41 2014
@@ -1134,12 +1134,8 @@
 	}
 	(void) mutex_unlock(&nlp->nlp_mtx);
 
-	if (session->ns_mover.md_state == NDMP_MOVER_STATE_ACTIVE) {
-		session->ns_tape.td_record_count = 0;
-		return (0);
-	}
-
-	return (-1);
+	return ((session->ns_mover.md_state == NDMP_MOVER_STATE_ACTIVE) ?
+	    0 : -1);
 }
 
 /*
--- old/usr/src/cmd/perl/Makefile	Tue Apr 22 05:37:41 2014
+++ new/usr/src/cmd/perl/Makefile	Tue Apr 22 05:37:42 2014
@@ -1,63 +1,37 @@
 #
-# CDDL HEADER START
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
 #
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
 #
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
 #
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
+# Copyright (c) 2014 Racktop Systems.
 #
-# CDDL HEADER END
-#
 
-#
-# Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
-#
+include $(SRC)/cmd/Makefile.cmd
 
-include ../Makefile.cmd
+SUBDIRS = \
+	contrib/Sun/Solaris/BSM \
+	contrib/Sun/Solaris/Intrs \
+	contrib/Sun/Solaris/Kstat \
+	contrib/Sun/Solaris/Lgrp \
+	contrib/Sun/Solaris/Pg \
+	contrib/Sun/Solaris/Project \
+	contrib/Sun/Solaris/Task \
+	contrib/Sun/Solaris/Utils
 
-all	:= TARGET = all
-install	:= TARGET = install
-clobber := TARGET = clobber
-clean	:= TARGET = clean
-test	:= TARGET = test
+all :=		TARGET = all
+install :=	TARGET = install
+clean :=	TARGET = clean
+clobber :=	TARGET = clobber
 
-# PERL_LEGACY is versions of Perl still delivered through ON
-PERL_VERSIONS = 5.16.1
+all install clean clobber: $(SUBDIRS)
 
-all install test: $(PERL_VERSIONS)-$(MACH) .WAIT $(PERL_VERSIONS)-$(MACH64)
+$(SUBDIRS): FRC
+	@cd $@; pwd; $(MAKE) $(TARGET)
 
-clean: FRC
-
-clobber: clean
-	$(RM) -r $(PERL_VERSIONS)-$(MACH) $(PERL_VERSIONS)-$(MACH64)
-
-#
-# Perl is not lint-clean.  Fake up a target.
-#
-lint:
-	@ $(ECHO) "usr/src/cmd/perl is not lint-clean: skipping"
-	@ $(TRUE)
-
-$(PERL_VERSIONS)-$(MACH): FRC
-	@ if [ ! -d $@ ]; then \
-	    $(CP) -r skel $@; \
-	fi
-	@ cd $@; pwd; PERL_VERSION=$(PERL_VERSIONS) PERLARCH=$(MACH) $(MAKE) $(TARGET)
-
-$(PERL_VERSIONS)-$(MACH64): FRC
-	@ if [ ! -d $@ ]; then \
-	    $(CP) -r skel $@; \
-	fi
-	@ cd $@; pwd; PERL_VERSION=$(PERL_VERSIONS) PERLARCH=$(MACH64) $(MAKE) $(TARGET)
-
 FRC:
--- /dev/null	Tue Apr 22 05:37:42 2014
+++ new/usr/src/cmd/perl/Makefile.perl	Tue Apr 22 05:37:42 2014
@@ -0,0 +1,49 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright (c) 2014 Racktop Systems.
+# Copyright 2014, OmniTI Computer Consulting, Inc. All right reserved.
+#
+
+include $(SRC)/lib/Makefile.lib
+
+PERL_VERSION = 5.16.1
+
+PERL_ARCH = i86pc-solaris-thread-multi-64int
+$(SPARC_BLD)PERL_ARCH = sun4-solaris-thread-multi-64int
+PERL_ARCH64 = i86pc-solaris-thread-multi-64
+$(SPARC_BLD)PERL_ARCH64 = sun4-solaris-thread-multi-64
+
+
+PERLDIR = $(ADJUNCT_PROTO)/usr/perl5/$(PERL_VERSION)
+PERLLIBDIR = $(PERLDIR)/lib/$(PERL_ARCH)
+PERLLIBDIR64 = $(PERLDIR)/lib/$(PERL_ARCH64)
+PERLINCDIR = $(PERLLIBDIR)/CORE
+PERLINCDIR64 = $(PERLLIBDIR64)/CORE
+
+PERLMOD = $(MODULE).pm
+PERLEXT = $(MACH)/$(MODULE).so
+PERLEXT64 = $(MACH64)/$(MODULE).so
+
+ROOTPERLDIR = $(ROOT)/usr/perl5/$(PERL_VERSION)
+ROOTPERLLIBDIR = $(ROOTPERLDIR)/lib/$(PERL_ARCH)
+ROOTPERLMODDIR = $(ROOTPERLLIBDIR)/Sun/Solaris
+ROOTPERLEXTDIR = $(ROOTPERLLIBDIR)/auto/Sun/Solaris/$(MODULE)
+ROOTPERLLIBDIR64 = $(ROOTPERLDIR)/lib/$(PERL_ARCH64)
+ROOTPERLMODDIR64 = $(ROOTPERLLIBDIR64)/Sun/Solaris
+ROOTPERLEXTDIR64 = $(ROOTPERLLIBDIR64)/auto/Sun/Solaris/$(MODULE)
+
+ROOTPERLMOD = $(ROOTPERLMODDIR)/$(MODULE).pm
+ROOTPERLEXT = $(ROOTPERLEXTDIR)/$(MODULE).so
+ROOTPERLMOD64 = $(ROOTPERLMODDIR64)/$(MODULE).pm
+ROOTPERLEXT64 = $(ROOTPERLEXTDIR64)/$(MODULE).so
+
+C99MODE = $(C99_ENABLE)
--- /dev/null	Tue Apr 22 05:37:42 2014
+++ new/usr/src/cmd/perl/Makefile.targ	Tue Apr 22 05:37:42 2014
@@ -0,0 +1,70 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright (c) 2014 Racktop Systems.
+# Copyright 2014, OmniTI Computer Consulting, Inc. All right reserved.
+#
+
+# Link against libc as perl solaris specs
+$(PERLEXT):= LDLIBS += -lc
+$(PERLEXT64):= LDLIBS += -lc
+
+# Allow for undefined symbols satisfied by perl
+$(PERLEXT):= ZDEFS =
+$(PERLEXT64):= ZDEFS =
+
+$(ROOTPERLEXT) := FILEMODE = 0555
+$(ROOTPERLMOD) := FILEMODE = 0444
+$(ROOTPERLEXT64) := FILEMODE = 0555
+$(ROOTPERLMOD64) := FILEMODE = 0444
+
+$(MACH) $(MACH64):
+	$(INS.dir)
+
+$(PERLEXT): $(MACH)/$(MODULE).o
+	$(BUILD.SO) $(MACH)/$(MODULE).o
+
+$(PERLEXT64): $(MACH64)/$(MODULE).o
+	$(BUILD.SO) -m64 $(MACH64)/$(MODULE).o
+
+# NOTE: With later version of Perl, we need to define PERL_EUPXS_ALWAYS_EXPORT
+# which is a backward-compatibility definition for the assumes-5.10 stuff here.
+$(MACH)/$(MODULE).o: $(MACH)/$(MODULE).c
+	$(COMPILE.c) -DPERL_EUPXS_ALWAYS_EXPORT $(C_PICFLAGS) -I$(PERLINCDIR) \
+	    $< -o $@
+
+$(MACH64)/$(MODULE).o: $(MACH64)/$(MODULE).c
+	$(COMPILE.c) -m64 -DPERL_EUPXS_ALWAYS_EXPORT $(C_PICFLAGS) \
+	    -I$(PERLINCDIR64) $< -o $@
+
+$(MACH)/$(MODULE).c: $(MACH) $(MODULE).xs 
+	$(PERLDIR)/bin/xsubpp $(XSUBPPFLAGS) $(MODULE).xs >$@
+
+$(MACH64)/$(MODULE).c: $(MACH64) $(MODULE).xs 
+	$(PERLDIR)/bin/xsubpp $(XSUBPPFLAGS) $(MODULE).xs >$@
+
+$(ROOTPERLMODDIR) $(ROOTPERLMODDIR64):
+	$(INS.dir)
+
+$(ROOTPERLMOD): $(ROOTPERLMODDIR) $(MODULE).pm
+	$(RM) $@; $(INS) -s -m $(FILEMODE) -f $^
+
+$(ROOTPERLMOD64): $(ROOTPERLMODDIR64) $(MODULE).pm
+	$(RM) $@; $(INS) -s -m $(FILEMODE) -f $^
+
+$(ROOTPERLEXTDIR) $(ROOTPERLEXTDIR64):
+	$(INS.dir)
+
+$(ROOTPERLEXT): $(ROOTPERLEXTDIR) $(MACH)/$(MODULE).so
+	$(RM) $@; $(INS) -s -m $(FILEMODE) -f $^
+
+$(ROOTPERLEXT64): $(ROOTPERLEXTDIR64) $(MACH64)/$(MODULE).so
+	$(RM) $@; $(INS) -s -m $(FILEMODE) -f $^
--- /dev/null	Tue Apr 22 05:37:42 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/BSM/Makefile	Tue Apr 22 05:37:42 2014
@@ -0,0 +1,32 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright (c) 2014 Racktop Systems.
+# Copyright 2014, OmniTI Computer Consulting, Inc. All rights reserved.
+#
+
+MODULE = _BSMparse
+
+include $(SRC)/cmd/perl/Makefile.perl
+
+# Install module into arch independent directory
+ROOTPERLMODDIR = $(ROOTPERLDIR)/lib/Sun/Solaris/BSM
+
+include $(SRC)/cmd/perl/Makefile.targ
+
+.KEEP_STATE:
+
+all: $(PERLMOD)
+
+install: $(ROOTPERLMOD)
+
+clean clobber:
+	$(RM) -r $(MACH) $(MACH64)
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/BSM/Makefile.PL	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,56 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License").  You may not use this file except in compliance
-# with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-# Copyright (c) 2001 by Sun Microsystems, Inc.
-# All rights reserved.
-#
-#ident	"%Z%%M%	%I%	%E% SMI"
-#
-
-use ExtUtils::MakeMaker;
-
-WriteMakefile(
-    NAME		=> 'Sun::Solaris::BSM::_BSMparse',
-    VERSION_FROM	=> '_BSMparse.pm',
-    clean		=> {
-	FILES	=> '_BSMparse.po'
-    }
-);
-
-sub MY::postamble {
-	'
-PO_OBJ		= _BSMparse.po
-PO_SRC		= _BSMparse.pm
-XGETTEXT	= xgettext
-
-$(PO_OBJ): $(PO_SRC)
-	$(XGETTEXT) -d $(PO_OBJ) $(PO_SRC)
-
-_msg: $(MSGDOMAIN) $(PO_OBJ)
-	$(RM) $(MSGDOMAIN)/$(PO_OBJ)
-	$(CP) $(PO_OBJ) $(MSGDOMAIN)
-
-$(MSGDOMAIN):
-	$(INS.dir)
-
-';
-}
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/Catalog/Catalog.pm	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,349 +0,0 @@
-#
-# Copyright (c) 2002, 2008 Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Catalog.pm contains perl code for exacct catalog tag manipulation.
-# 
-
-require 5.8.4;
-use strict;
-use warnings;
-
-package Sun::Solaris::Exacct::Catalog;
-
-our $VERSION = '1.3';
-use Carp;
-use XSLoader;
-XSLoader::load(__PACKAGE__, $VERSION);
-
-# %_Constants and @_Constants are set up by the XSUB bootstrap() function.
-our (@EXPORT_OK, %EXPORT_TAGS, @_Constants, %_Constants);
-@EXPORT_OK = @_Constants;
-%EXPORT_TAGS = (CONSTANTS => \@_Constants, ALL => \@EXPORT_OK);
-
-use base qw(Exporter);
-
-#
-# Class interface.
-#
-
-#
-# Register a foreign catalog.  Arguments are as follows:
-#    <catalog prefix>	Used to uniquely identify the catalog being defined.
-#			Must be composed only of uppercase characters.
-#    <catalog id>	Numeric identifier for the catalog.
-#			Must be between 1 and 15.
-#    <export flag>	If true, the constants defined by the register sub will
-#			be exported into the caller's namespace.
-#    <id list>		List of (name, value) pairs.  These are prefixed with
-#			"<catalog_prefix>_" and are used for defining constants
-#			that can be used as catalog id field values.
-# An example:
-#    Sun::Solaris::Exacct::Catalog->register("FROB", 0x01, 1,
-#        FLUB => 0x00000001, WURB => 0x00000010)
-# results in the definition of the following constants:
-#    EXC_FROB	0x01 << 24
-#    FROB_FLUB	0x00000001
-#    FROB_WURB  0x00000010
-#
-# Returns 'undef' on success, otherwise an error message.
-#
-sub register
-{
-	my ($class, $cat_pfx, $cat_id, $export, %idlist) = @_;
-
-	# Sanity checks.
-	my $cat = 'EXC_'. $cat_pfx;
-	return ("Invalid catalog prefix \"$cat_pfx\"")
-	    if ($cat_pfx !~ /^[A-Z][A-Z0-9]*$/ || $cat_pfx =~ /^EX[TCD]$/);
-	return ("Duplicate catalog prefix")
-	    if (exists($_Constants{catlg}{name}{$cat}));
-	my $id = $cat_id << 24;
-	return ("Invalid catalog id \"$cat_id\"")
-	    if ($cat_id < 1 || $cat_id > 0xf);   # 4-bit field
-	
-	# Validate the (name, value) pairs.
-	my %seen;
-	while (my ($n, $v) = each(%idlist)) {
-		return ("Invalid id name \"$n\"")
-		    if ($n !~ /^[A-Z][A-Z0-9_]*[A-Z0-9]$/);
-		return ("Invalid id value \"$v\"")
-		    if ($v < 0 || $v > 0xffffff);   # 24-bit field
-		return ("Redefinition of id value \"$v\"")
-		    if ($seen{$v}++);
-	}
-	undef(%seen);
-
-	# Initialise new lookup data members
-	$_Constants{catlg}{name}{$cat} = $id;
-	$_Constants{catlg}{value}{$id} = $cat;
-	my $id_by_name = $_Constants{id}{name}{$cat_pfx}{name}  = {};
-	my $id_by_val  = $_Constants{id}{name}{$cat_pfx}{value} = {};
-	$_Constants{id}{value}{$id} = $_Constants{id}{name}{$cat_pfx};
-
-	# Put the passed (name, value) pairs into the appropriate hashes.
-	my @export_ok = ($cat);
-	while (my ($n, $v) = each(%idlist)) {
-		my $pn = "${cat_pfx}_${n}";
-		$id_by_name->{$pn} = $v;
-		$id_by_val->{$v}  = $pn;
-		push(@export_ok, $pn);
-	}
-
-	# Export the new symbols into the caller's namespace if required.
-	if ($export) {
-		our (%EXPORT, @EXPORT_OK);
-		@EXPORT{@export_ok} = (1) x @export_ok;
-		push(@EXPORT_OK, @export_ok);
-		__PACKAGE__->export_to_level(1, undef, @export_ok);
-	}
-}
-
-#
-# Create a new Catalog object.  Arguments are either an integer, an existing
-# Catalog object or a (type, catalog, id) triplet.
-#
-sub new
-{
-	my ($class, @vals) = @_;
-	my $value;
-
-	# A single value must be a full catalog tag 
-	if (@vals == 1) {
-		$value = _catalog_value($vals[0]);
-
-	# A list of 3 values is (type, catalog, id)
-	} elsif (@vals == 3) {
-		my ($t, $c, $d) = @vals;
-		my ($which);
-
-		$which = _is_iv($t) ? 'value' : 'name';
-		croak("Invalid data type \"$t\"")
-		    if (! exists($_Constants{type}{$which}{$t}));
-		$t = $_Constants{type}{name}{$t} if ($which eq 'name');
-
-		$which = _is_iv($c) ? 'value' : 'name';
-		croak("Invalid catalog \"$c\"")
-		    if (! exists($_Constants{catlg}{$which}{$c}));
-		$c = $_Constants{catlg}{name}{$c} if ($which eq 'name');
-
-		$which = _is_iv($d) ? 'value' : 'name';
-		croak("Invalid data id \"$d\"")
-		    if (! exists($_Constants{id}{value}{$c}{$which}{$d}));
-		$d = $_Constants{id}{value}{$c}{name}{$d} if ($which eq 'name');
-
-		$value = $t | $c | $d;
-
-	# Only 1 or 3 arguments are valid
-	} else {
-		croak("Invalid number of arguments");
-	}
-
-	# Create a readonly catalog object.
-	return (_new_catalog($value));
-}
-
-#
-# Object interface.
-#
-
-#
-# Get the value of a Catalog object.  In a scalar context it returns the 32-bit
-# integer representing the tag.  In a list context it returns a
-# (type, catalog, id) triplet.  Each of these is a dual-typed SV that in a
-# string context returns a representation of the appropriate constant, e.g.
-# 'EXD_HOSTNAME', and in a numeric context returns the integer value of the
-# associated constant.
-#
-sub value
-{
-	my ($self) = @_;
-
-	# In an array context return the split out catalog components
-	if (wantarray()) {
-		my $t = $$self & &EXT_TYPE_MASK;
-		$t = _double_type($t, exists($_Constants{type}{value}{$t})
-		    ? $_Constants{type}{value}{$t}
-		    : 'UNKNOWN_TYPE');
-
-		my $c = $$self & &EXC_CATALOG_MASK;
-		$c = _double_type($c,
-		    exists($_Constants{catlg}{value}{$c})
-		    ? $_Constants{catlg}{value}{$c}
-		    : 'UNKNOWN_CATALOG');
-
-		my $d = $$self & &EXD_DATA_MASK;
-		$d = _double_type($d,
-		    exists($_Constants{id}{value}{int($c)}{value}{$d})
-		    ? $_Constants{id}{value}{int($c)}{value}{$d}
-		    : 'UNKNOWN_ID');
-
-		return($t, $c, $d);
-
-	# In a scalar context return the whole thing
-	} else {
-		return($$self);
-	}
-}
-
-#
-# Fetch the type field of the Catalog object.  The return value is a dual-typed
-# SV that in a string context returns a representation of the appropriate
-# constant, e.g. 'EXT_STRING', and in a numeric context returns the integer
-# value of the associated constant.
-#
-sub type
-{
-	my ($self) = @_;
-
-	# Extract the type field and look up the string representation.
-	my $t = $$self & &EXT_TYPE_MASK;
-	$t = _double_type($t, exists($_Constants{type}{value}{$t})
-	    ? $_Constants{type}{value}{$t} : 'UNKNOWN_TYPE');
-	return ($t);
-}
-
-#
-# Fetch the catalog field of the Catalog object.  (see type()).
-#
-sub catalog
-{
-	my ($self, $val) = @_;
-
-	# Extract the catalog field and look up the string representation.
-	my $c = $$self & &EXC_CATALOG_MASK;
-	$c = _double_type($c, exists($_Constants{catlg}{value}{$c})
-	    ? $_Constants{catlg}{value}{$c} : 'UNKNOWN_CATALOG');
-	return ($c);
-}
-
-#
-# Fetch the id field of the Catalog object.  (see type()).
-#
-sub id
-{
-	my ($self, $val) = @_;
-
-	#
-	# Extract the catalog and id field and look up the
-	# string representation of the id field.
-	#
-	my $c = $$self & &EXC_CATALOG_MASK;
-	my $d = $$self & &EXD_DATA_MASK;
-	$d = _double_type($d, exists($_Constants{id}{value}{$c}{value}{$d})
-	    ? $_Constants{id}{value}{$c}{value}{$d} : 'UNKNOWN_ID');
-	return ($d);
-}
-
-#
-# Return a string representation of the type field.
-#
-sub type_str
-{
-	my ($self) = @_;
-
-	# Lookup the type and fabricate a string from it.
-	my $t = $$self & &EXT_TYPE_MASK;
-	if (exists($_Constants{type}{value}{$t})) {
-		$t = $_Constants{type}{value}{$t};
-		$t =~ s/^EXT_//;
-		$t =~ s/_/ /g;
-		return(lc($t));
-	} else {
-		return('UNKNOWN TYPE');
-	}
-}
-
-#
-# Return a string representation of the catalog field.
-#
-sub catalog_str
-{
-	my ($self) = @_;
-
-	# Lookup the catalog and fabricate a string from it.
-	my $c = $$self & &EXC_CATALOG_MASK;
-	if (exists($_Constants{catlg}{value}{$c})) {
-		$c = $_Constants{catlg}{value}{$c};
-		$c =~ s/^EXC_//;
-		$c =~ s/_/ /g;
-		return(lc($c));
-	} else {
-		return('UNKNOWN CATALOG');
-	}
-}
-
-#
-# Return a string representation of the id field.
-#
-sub id_str
-{
-	my ($self) = @_;
-
-	# Lookup the id and fabricate a string from it.
-	my $c = $$self & &EXC_CATALOG_MASK;
-	my $d = $$self & &EXD_DATA_MASK;
-	if (exists($_Constants{id}{value}{$c}) &&
-	    exists($_Constants{id}{value}{$c}{value}{$d})) {
-		$d = $_Constants{id}{value}{$c}{value}{$d};
-		$d =~ s/^[A-Z]+_//;
-		$d =~ s/_/ /g;
-		return(lc($d));
-	} else {
-		return('UNKNOWN ID');
-	}
-}
-
-#
-# AUTOLOAD for constant definitions.  Values are looked up in the %_Constants
-# hash, and then used to create an anonymous sub that will return the correct
-# value.  This is then placed into the appropriate symbol table so that future
-# calls will bypass the AUTOLOAD and call the sub directly.
-#
-sub AUTOLOAD
-{
-	# Extract the name of the constant we are looking for, and its prefix.
-	our $AUTOLOAD;
-	my $const = $AUTOLOAD;
-	$const =~ s/.*:://;
-	my ($prefix) = $const =~ /^([^_]+)/;
-
-	# Try to find the appropriate prefix hash.
-	my $href;
-	if ($prefix eq 'EXT') {
-		$href = $_Constants{type}{name};
-	} elsif ($prefix eq 'EXC') {
-		$href = $_Constants{catlg}{name};
-	} elsif (exists($_Constants{id}{name}{$prefix})) {
-		$href = $_Constants{id}{name}{$prefix}{name};
-	}
-
-	# Look first in the prefix hash, otherwise try the 'other' hash.
-	my $val = undef;
-	if (exists($href->{$const})) {
-		$val = $href->{$const};
-	} elsif (exists($_Constants{other}{name}{$const})) {
-		$val = $_Constants{other}{name}{$const};
-	}
-
-	#
-	# Generate the const sub,  place in the appropriate glob
-	# and finally goto it to return the value.
-	#
-	croak("Undefined constant \"$const\"") if (! defined($val));
-	my $sub = sub { return $val; };
-	no strict qw(refs);
-	*{$AUTOLOAD} = $sub;
-	goto &$sub;
-}
-
-#
-# To quieten AUTOLOAD - if this isn't defined AUTLOAD will be called
-# unnecessarily during object destruction.
-#
-sub DESTROY
-{
-}
-
-1;
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/Catalog/Catalog.xs	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,244 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- */
-
-/*
- * Catalog.xs contains XS code for exacct catalog tag manipulation.  This
- * consists of code to create the @_Constants array and %_Constants hash used
- * for defining constants on the fly via AUTOLOAD, and utility functions for
- * creaing double-typed SVs.
- */
-
-#include "../exacct_common.xh"
-
-/* Pull in the file generated by extract_defines. */
-#include "CatalogDefs.xi"
-
-/*
- * This function populates the %_Constants hash and @_Constants array based on
- * the values extracted from the exacct header files by the extract_defines
- * script and written to the .xi file which is included above.  It also creates
- * a const sub for each constant that returns the associcated value.  It should
- * be called from the BOOT section of this module.  The structure of the
- * %_Constants hash is given below - this is used to map between the symbolic
- * and numeric values of the various EX[CTD] constants.  The register() method
- * extends the %_Constants hash with values for the foreign catalog, so that it
- * can be handled in exactly the same way as the built-in catalog.
- *
- * $Constants{catlg}{name}{EXC_DEFAULT} => 0
- *                  ...
- *                  {value}{0} => 'EXC_DEFAULT'
- *                  ...
- *                           *A*
- *           {id}{name}{EXD}{name}{EXD_CREATOR} => 3
- *                          ...
- *                          {value}{3} => 'EXD_CREATOR'
- *                          ...
- *               {value}{0} => *A*
- *               ...
- *           {other}{name}{EXC_CATALOG_MASK} => 251658240
- *                  ...
- *                  {value}{251658240} => 'EXC_CATALOG_MASK'
- *                  ...
- *           {type}{name}{EXT_DOUBLE} => 1342177280
- *                 ...
- *                 {value}{1342177280} => 'EXT_DOUBLE'
- *                 ...
- */
-#define	CONST_NAME "::Catalog::_Constants"
-static void
-define_catalog_constants()
-{
-	HV		*const_hash, *hv1, *hv2, *hv3;
-	AV		*const_ary;
-	HV		*type_by_name,  *type_by_value;
-	HV		*catlg_by_name, *catlg_by_value;
-	HV		*id_by_name,    *id_by_value;
-	HV		*other_by_name, *other_by_value;
-	constval_t	*cvp;
-
-	/* Create the two new perl variables. */
-	const_hash = perl_get_hv(PKGBASE CONST_NAME, TRUE);
-	const_ary = perl_get_av(PKGBASE CONST_NAME, TRUE);
-
-	/* Create the 'type' subhash. */
-	type_by_name = newHV();
-	type_by_value = newHV();
-	hv1 = newHV();
-	hv_store(const_hash, "type", 4, newRV_noinc((SV*)hv1), 0);
-	hv_store(hv1, "name", 4, newRV_noinc((SV*)type_by_name), 0);
-	hv_store(hv1, "value", 5, newRV_noinc((SV*)type_by_value), 0);
-
-	/* Create the 'catlg' subhash. */
-	catlg_by_name = newHV();
-	catlg_by_value = newHV();
-	hv1 = newHV();
-	hv_store(const_hash, "catlg", 5, newRV_noinc((SV*)hv1), 0);
-	hv_store(hv1, "name", 4, newRV_noinc((SV*)catlg_by_name), 0);
-	hv_store(hv1, "value", 5, newRV_noinc((SV*)catlg_by_value), 0);
-
-	/*
-	 * The 'id' subhash has an extra level of name/value subhashes,
-	 * where the upper level is indexed by the catalog prefix (EXD for
-	 * the default catalog).  The lower two levels are actually the same
-	 * hashes referenced by two parents, and hold the catalog id numeric
-	 * values and corresponding string values.
-	 */
-	id_by_name = newHV();
-	id_by_value = newHV();
-	hv1 = newHV();
-	hv_store(const_hash, "id", 2, newRV_noinc((SV*)hv1), 0);
-	hv2 = newHV();
-	hv_store(hv1, "name", 4, newRV_noinc((SV*)hv2), 0);
-	hv3 = newHV();
-	hv_store(hv2, "EXD", 3, newRV_noinc((SV*)hv3), 0);
-	hv_store(hv3, "name", 4, newRV_noinc((SV*)id_by_name), 0);
-	hv_store(hv3, "value", 5, newRV_noinc((SV*)id_by_value), 0);
-	IdValueHash = newHV();
-	hv_store(hv1, "value", 5, newRV_noinc((SV*)IdValueHash), 0);
-	hv_store_ent(IdValueHash, newSVuv(EXC_DEFAULT), newRV_inc((SV*)hv3), 0);
-
-	/* Create the 'other' subhash, for non-catalog #defines. */
-	other_by_name = newHV();
-	other_by_value = newHV();
-	hv1 = newHV();
-	hv_store(const_hash, "other", 5, newRV_noinc((SV*)hv1), 0);
-	hv_store(hv1, "name", 4, newRV_noinc((SV*)other_by_name), 0);
-	hv_store(hv1, "value", 5, newRV_noinc((SV*)other_by_value), 0);
-
-	/*
-	 * Populate %_Constants and %_Constants from the contents of the
-	 * generated constants array.
-	 */
-	for (cvp = constants; cvp->name != NULL; cvp++) {
-		HV	*name_hv, *value_hv;
-		SV	*name, *value;
-
-		/* Create the name/value SVs, save the name in @_Constants. */
-		name = newSVpvn((char *)cvp->name, cvp->len);
-		value = newSVuv(cvp->value);
-		av_push(const_ary, SvREFCNT_inc(name));
-
-		/*
-		 * Decide which hash the name/value belong in,
-		 * based on consttype .
-		 */
-		switch (cvp->consttype) {
-		case type:
-			name_hv  = type_by_name;
-			value_hv = type_by_value;
-			break;
-		case catlg:
-			name_hv = catlg_by_name;
-			/* Special case for duplicated-value EXC_NONE tag. */
-			if (cvp->value == EXC_NONE &&
-			    strcmp(cvp->name, "EXC_NONE") == 0) {
-				value_hv = NULL;
-			} else {
-				value_hv = catlg_by_value;
-			}
-			break;
-		case id:
-			name_hv  = id_by_name;
-			value_hv = id_by_value;
-			break;
-		case other:
-			name_hv  = other_by_name;
-			value_hv = other_by_value;
-			break;
-		}
-
-		/* Store in the appropriate name & value hashes. */
-		if (name_hv) {
-			hv_store_ent(name_hv, name, value, 0);
-		}
-		if (value_hv) {
-			hv_store_ent(value_hv, value, name, 0);
-		}
-
-		/* Free the name and/or value if they weren't used. */
-		if (! name_hv) {
-			SvREFCNT_dec(value);
-		}
-		if (! value_hv) {
-			SvREFCNT_dec(name);
-		}
-	}
-}
-#undef CONST_NAME
-
-/*
- * The XS code exported to perl is below here.  Note that the XS preprocessor
- * has its own commenting syntax, so all comments from this point on are in
- * that form.
- *
- * All the following are private functions.
- */
-
-MODULE = Sun::Solaris::Exacct::Catalog PACKAGE = Sun::Solaris::Exacct::Catalog
-PROTOTYPES: ENABLE
-
- #
- # Define the stash pointers if required and create and populate @_Constants.
- #
-BOOT:
-	init_stashes();
-	define_catalog_constants();
-
- #
- # Create and return a double-typed SV.
- #
-SV*
-_double_type(i, c)
-	unsigned int	i;
-	char		*c;
-CODE:
-	RETVAL = newSVuv(i);
-	sv_setpv(RETVAL, c);
-	SvIOK_on(RETVAL);
-OUTPUT:
-	RETVAL
-
- #
- # Return true if the SV contains an IV.
- #
-int
-_is_iv(sv)
-	SV	*sv;
-CODE:
-	RETVAL = SvIOK(sv);
-OUTPUT:
-	RETVAL
-
- #
- # Return true if the SV contains a PV.
- #
-int
-_is_pv(sv)
-	SV	*sv;
-CODE:
-	RETVAL = SvPOK(sv);
-OUTPUT:
-	RETVAL
-
- #
- # Return a blessed reference to a readonly copy of the passed IV
- #
-SV*
-_new_catalog(sv)
-	SV	*sv;
-CODE:
-	RETVAL = new_catalog(SvUV(sv));
-OUTPUT:
-	RETVAL
-
- #
- # Return the integer catalog value from the passed object or SV.
- #
-int
-_catalog_value(sv)
-	SV	*sv;
-CODE:
-	RETVAL = catalog_value(sv);
-OUTPUT:
-	RETVAL
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/Catalog/Makefile.PL	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,140 +0,0 @@
-#
-# Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Makefile.PL for ::Exacct::Catalog
-#
-
-# See ../Makefile.PL for an explanation of the linker flag manipulations.
-
-require 5.8.4;
-use strict;
-use warnings;
-use ExtUtils::MakeMaker;
-
-#
-# Some later versions of ExtUtils::MakeMaker are broken,
-# and complain about function redefinitions in the child Makefile.PLs.
-# Stop the warnings.
-#
-no warnings qw(redefine);
-
-our (@defines, @man3pods);
-
-#
-# MakeMaker overrides.
-#
-package MY;
-no warnings qw(once);
-
-#
-# Overrides that are common to both the ON and non-ON build environments.
-#
-
-#
-# Suppress the setting of LD_RUN_PATH, as it isn't necessary.
-#
-
-sub const_loadlibs
-{
-	my $self = shift(@_);
-	delete($self->{LD_RUN_PATH});
-	return($self->SUPER::const_loadlibs(@_));
-}
-
-sub dynamic_lib
-{
-	my $self = shift(@_);
-	my $txt = $self->SUPER::dynamic_lib(@_);
-	$txt =~ s/LD_RUN_PATH=\S*\s*//;
-	return($txt);
-}
-
-#
-# ON-specific overrides.
-#
-if (exists($ENV{CODEMGR_WS}) && exists($ENV{ENVCPPFLAGS1})) {
-	#
-	# Override postamble and replace it with one that explicitly records
-	# the dependency between Catalog.c (generated from Catalog.xs by xsubpp)
-	# and the ObjectDefs.xi file (generated from sys/exacct_catalog.h by
-	# extract_defines).  Note we have to mimic the -I processing done by cc
-	# to find the correct version of the file, as we want the copy from the
-	# proto area rather than /usr/include.  This ensures that the constant
-	# values exported by the perl module stay up-to date with the
-	# corresponding #defines.
-	#
-	*postamble = sub {
-		return <<'EOF';
-EXACCT_H:sh= \
-	for dir in $ENVCPPFLAGS1 $ENVCPPFLAGS2 $ENVCPPFLAGS3 $ENVCPPFLAGS4 \
-	    /usr/include; do \
-		dir=`expr $dir : '^-I\(.*\)$' \| $dir`; \
-		file="$dir/sys/exacct_catalog.h"; \
-		test -f $file && echo $file && break; \
-	done;
-
-Catalog.c:	CatalogDefs.xi
-
-CatalogDefs.xi:	../extract_defines $(EXACCT_H)
-	$(PERL) ../extract_defines Catalog $@ $(EXACCT_H)
-EOF
-	};
-
-	# Enable/disable debugging as required.
-	@main::defines = ( DEFINE => '-DEXACCT_DEBUG' )
-	    if (! exists($ENV{RELEASE_BUILD}));
-
-	# Don't install POD pages for ON.
-	@main::man3pods = ( MAN3PODS => {} );
-
-#
-# Non-ON overrides.
-#
-} else {
-	#
-	# Override postamble and replace it with one that explicitly records
-	# the dependency between Catalog.c (generated from Catalog.xs by xsubpp)
-	# and the ObjectDefs.xi file (generated from
-	# /usr/include/sys/exacct_catalog.h by extract_defines).  This ensures
-	# that the constant values exported by the perl module stay up-to date
-	# with the corresponding #defines.
-	#
-	*postamble = sub {
-		return <<'EOF';
-EXACCT_H = /usr/include/sys/exacct_catalog.h
-
-Catalog.c:	CatalogDefs.xi
-
-CatalogDefs.xi:	../extract_defines $(EXACCT_H)
-	$(PERL) ../extract_defines Catalog $@ $(EXACCT_H)
-EOF
-	};
-
-	# Install the POD documentation for non-ON builds.
-	my $man3pfx = '$(INST_MAN3DIR)/Sun::Solaris::Exacct';
-	@main::man3pods = (
-	    MAN3PODS => { '../pod/Catalog.pod' =>
-	    $man3pfx . '::Catalog.$(MAN3EXT)' }
-	);
-}
-
-#
-# Having set everything up, write the Makefile.
-#
-package main;
-
-WriteMakefile(
-    NAME         => 'Sun::Solaris::Exacct::Catalog',
-    VERSION_FROM => 'Catalog.pm',
-    H            => [ '../exacct_common.xh' ],
-    TYPEMAPS     => [ '../typemap' ],
-    @defines,
-    @man3pods,
-    dynamic_lib  => { OTHERLDFLAGS =>
-        '-h $(DLBASE).$(DLEXT) ' .
-        '-R\$$ORIGIN/.. $(INST_ARCHAUTODIR)/../Exacct.so'
-	},
-    realclean    => { FILES => 'CatalogDefs.xi' },
-);
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/Changes	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,9 +0,0 @@
-#
-# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
-#
-
-Version 1.4
-Fixed bug when building in ON environment - was using incorrect header files.
-
-Version 1.3
-Initial Public Source release.
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/Exacct.pm	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,121 +0,0 @@
-#
-# Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Exacct.pm contains wrappers for the exacct error functions and syscalls,
-# and some 'shorthand' convenience functions.
-# 
-
-require 5.8.4;
-use strict;
-use warnings;
-
-package Sun::Solaris::Exacct;
-
-our $VERSION = '1.5';
-use XSLoader;
-XSLoader::load(__PACKAGE__, $VERSION);
-
-# @_Constants is set up by the XSUB bootstrap() function.
-our (@EXPORT_OK, %EXPORT_TAGS, @_Constants);
-my @syscalls = qw(getacct putacct wracct);
-my @libcalls = qw(ea_error ea_error_str);
-my @shorthand = qw(ea_register_catalog ea_new_catalog ea_new_file ea_new_item
-    ea_new_group ea_dump_object);
-@EXPORT_OK = (@_Constants, @syscalls, @libcalls, @shorthand);
-%EXPORT_TAGS = (CONSTANTS => \@_Constants, SYSCALLS => \@syscalls,
-    LIBCALLS => \@libcalls, SHORTHAND => \@shorthand, ALL => \@EXPORT_OK);
-
-use base qw(Exporter);
-
-#
-# Extend the default Exporter::import to do optional inclusion of all the
-# lower-level Exacct modules.  Any export tag prefixed with 'EXACCT_' is
-# interpreted as a request to import that tag from all the Exacct modules.
-#
-sub import
-{
-	my (@my_tags, %sub_tags);
-	shift(@_);
-	foreach my $tag (@_) {
-		# Note: Modifies @_
-		if ($tag =~ /^:EXACCT_(.*)$/) {
-			my $new_tag = ":$1";
-			push(@my_tags, $new_tag);
-			$sub_tags{$new_tag} = 1;
-		} else {
-			push(@my_tags, $tag);
-		}
-	}
-
-	# Export the taglist with all "EXACCT_" prefixes removed.
-	__PACKAGE__->export_to_level(1, undef, @my_tags);
-
-	# Do sub-module imports if required.
-	if (@my_tags = grep(exists($sub_tags{$_}), qw(:ALL :CONSTANTS))) {
-
-		# ::Catalog
-		require Sun::Solaris::Exacct::Catalog;
-		Sun::Solaris::Exacct::Catalog->export_to_level(1, undef,
-		    @my_tags);
-
-		# ::File and Fcntl
-		require Sun::Solaris::Exacct::File;
-		Sun::Solaris::Exacct::File->export_to_level(1, undef,
-		    @my_tags);
-		require Fcntl;
-		Fcntl->export_to_level(1, undef, ':DEFAULT');
-
-		# ::Object
-		require Sun::Solaris::Exacct::Object;
-		Sun::Solaris::Exacct::Object->export_to_level(1, undef,
-		    @my_tags);
-	}
-}
-
-#
-# Convenience functions - shorthand for fully qualified method names.  Note that
-# goto() is used to call the methods so that any errors will appear to come
-# from the correct place.  Because goto() does not understand method call syntax
-# it is necessary to fake up the class a parameter by unshifting the appropriate
-# class name onto the argument lists.
-#
-
-sub ea_register_catalog
-{
-	unshift(@_, 'Sun::Solaris::Exacct::Catalog');
-	goto(&Sun::Solaris::Exacct::Catalog::register);
-}
-
-sub ea_new_catalog
-{
-	unshift(@_, 'Sun::Solaris::Exacct::Catalog');
-	goto(&Sun::Solaris::Exacct::Catalog::new);
-}
-
-sub ea_new_file
-{
-	unshift(@_, 'Sun::Solaris::Exacct::File');
-	goto(&Sun::Solaris::Exacct::File::new);
-}
-
-sub ea_new_item
-{
-	unshift(@_, 'Sun::Solaris::Exacct::Item');
-	goto(&Sun::Solaris::Exacct::Object::Item::new);
-}
-
-sub ea_new_group
-{
-	unshift(@_, 'Sun::Solaris::Exacct::Group');
-	goto(&Sun::Solaris::Exacct::Object::Group::new);
-}
-
-sub ea_dump_object
-{
-	unshift(@_, 'Sun::Solaris::Exacct::Object');
-	goto(&Sun::Solaris::Exacct::Object::dump);
-}
-
-1;
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/Exacct.xs	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,606 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- *
- * Exacct.xs contains XS code for creating various exacct-related constants,
- * and for providing wrappers around exacct error handling and
- * accounting-related system calls.  It also contains commonly-used utility
- * code shared by its sub-modules.
- */
-
-#include <string.h>
-#include "exacct_common.xh"
-
-/*
- * Pull in the file generated by extract_defines.  This contains a table
- * of numeric constants and their string equivalents which have been extracted
- * from the various exacct header files by the extract_defines script.
- */
-#include "ExacctDefs.xi"
-
-/*
- * Object stash pointers - caching these speeds up the creation and
- * typechecking of perl objects by removing the need to do a hash lookup.
- * The peculiar variable names are so that typemaps can generate the correct
- * package name using the typemap '$Package' variable as the root of the name.
- */
-HV *Sun_Solaris_Exacct_Catalog_stash;
-HV *Sun_Solaris_Exacct_File_stash;
-HV *Sun_Solaris_Exacct_Object_Item_stash;
-HV *Sun_Solaris_Exacct_Object_Group_stash;
-HV *Sun_Solaris_Exacct_Object__Array_stash;
-
-/*
- * Pointer to part of the hash tree built by define_catalog_constants in
- * Catalog.xs.  This is used by catalog_id_str() when mapping from a catalog
- * to an id string.
- */
-HV *IdValueHash = NULL;
-
-/*
- * Last buffer size used for packing and unpacking exacct objects.
- */
-static int last_bufsz = 0;
-
-/*
- * Common utility code.  This is placed here instead of in the sub-modules to
- * reduce the number of cross-module linker dependencies that are required,
- * although most of the code more properly belongs in the sub-modules.
- */
-
-/*
- * This function populates the various stash pointers used by the ::Exacct
- * module.  It is called from each of the module BOOT sections to ensure the
- * stash pointers are initialised on startup.
- */
-void
-init_stashes(void)
-{
-	if (Sun_Solaris_Exacct_Catalog_stash == NULL) {
-		Sun_Solaris_Exacct_Catalog_stash =
-		    gv_stashpv(PKGBASE "::Catalog", TRUE);
-		Sun_Solaris_Exacct_File_stash =
-		    gv_stashpv(PKGBASE "::File", TRUE);
-		Sun_Solaris_Exacct_Object_Item_stash =
-		    gv_stashpv(PKGBASE "::Object::Item", TRUE);
-		Sun_Solaris_Exacct_Object_Group_stash =
-		    gv_stashpv(PKGBASE "::Object::Group", TRUE);
-		Sun_Solaris_Exacct_Object__Array_stash =
-		    gv_stashpv(PKGBASE "::Object::_Array", TRUE);
-	}
-}
-
-/*
- * This function populates the @_Constants array in the specified package
- * based on the values extracted from the exacct header files by the
- * extract_defines script and written to the .xi file which is included above.
- * It also creates a const sub for each constant that returns the associcated
- * value.  It should be called from the BOOT sections of modules that export
- * constants.
- */
-#define	CONST_NAME "::_Constants"
-void
-define_constants(const char *pkg, constval_t *cvp)
-{
-	HV		*stash;
-	char		*name;
-	AV		*constants;
-
-	/* Create the new perl @_Constants variable. */
-	stash = gv_stashpv(pkg, TRUE);
-	name = New(0, name, strlen(pkg) + sizeof (CONST_NAME), char);
-	PERL_ASSERT(name != NULL);
-	strcpy(name, pkg);
-	strcat(name, CONST_NAME);
-	constants = perl_get_av(name, TRUE);
-	Safefree(name);
-
-	/* Populate @_Constants from the contents of the generated array. */
-	for (; cvp->name != NULL; cvp++) {
-		newCONSTSUB(stash, (char *)cvp->name, newSVuv(cvp->value));
-		av_push(constants, newSVpvn((char *)cvp->name, cvp->len));
-	}
-}
-#undef CONST_NAME
-
-/*
- * Return a new Catalog object - only accepts an integer catalog value.
- * Use this purely for speed when creating Catalog objects from other XS code.
- * All other Catalog object creation should be done with the perl new() method.
- */
-SV*
-new_catalog(uint32_t cat)
-{
-	SV *iv, *ref;
-
-	iv = newSVuv(cat);
-	ref = newRV_noinc(iv);
-	sv_bless(ref, Sun_Solaris_Exacct_Catalog_stash);
-	SvREADONLY_on(iv);
-	return (ref);
-}
-
-/*
- * Return the integer catalog value from the passed Catalog or IV.
- * Calls croak() if the SV is not of the correct type.
- */
-ea_catalog_t
-catalog_value(SV *catalog)
-{
-	SV	*sv;
-
-	/* If a reference, dereference and check it is a Catalog. */
-	if (SvROK(catalog)) {
-		sv = SvRV(catalog);
-		if (SvIOK(sv) &&
-		    SvSTASH(sv) == Sun_Solaris_Exacct_Catalog_stash) {
-			return (SvIV(sv));
-		} else {
-			croak("Parameter is not a Catalog or integer");
-		}
-
-	/* For a plain IV, just return the value. */
-	} else if (SvIOK(catalog)) {
-		return (SvIV(catalog));
-
-	/* Anything else is an error */
-	} else {
-		croak("Parameter is not a Catalog or integer");
-	}
-}
-
-/*
- * Return the string value of the id subfield of an ea_catalog_t.
- */
-char *
-catalog_id_str(ea_catalog_t catalog)
-{
-	static ea_catalog_t	cat_val = ~0U;
-	static HV		*cat_hash = NULL;
-	ea_catalog_t		cat;
-	ea_catalog_t		id;
-	char			key[12];    /* Room for dec(2^32) digits. */
-	SV			**svp;
-
-	cat = catalog & EXC_CATALOG_MASK;
-	id = catalog & EXD_DATA_MASK;
-
-	/* Fetch the correct id subhash if the catalog has changed. */
-	if (cat_val != cat) {
-		snprintf(key, sizeof (key), "%d", cat);
-		PERL_ASSERT(IdValueHash != NULL);
-		svp = hv_fetch(IdValueHash, key, strlen(key), FALSE);
-		if (svp == NULL) {
-			cat_val = ~0U;
-			cat_hash = NULL;
-		} else {
-			HV *hv;
-
-			cat_val = cat;
-			hv = (HV *)SvRV(*svp);
-			PERL_ASSERT(hv != NULL);
-			svp = hv_fetch(hv, "value", 5, FALSE);
-			PERL_ASSERT(svp != NULL);
-			cat_hash = (HV *)SvRV(*svp);
-			PERL_ASSERT(cat_hash != NULL);
-		}
-	}
-
-	/* If we couldn't find the hash, it is a catalog we don't know about. */
-	if (cat_hash == NULL) {
-		return ("UNKNOWN_ID");
-	}
-
-	/* Fetch the value from the selected catalog and return it. */
-	snprintf(key, sizeof (key), "%d", id);
-	svp = hv_fetch(cat_hash, key, strlen(key), TRUE);
-	if (svp == NULL) {
-		return ("UNKNOWN_ID");
-	}
-	return (SvPVX(*svp));
-}
-
-/*
- * Create a new ::Object by wrapping an ea_object_t in a perl SV.  This is used
- * to wrap exacct records that have been read from a file, or packed records
- * that have been inflated.
- */
-SV *
-new_xs_ea_object(ea_object_t *ea_obj)
-{
-	xs_ea_object_t	*xs_obj;
-	SV		*sv_obj;
-
-	/* Allocate space - use perl allocator. */
-	New(0, xs_obj, 1, xs_ea_object_t);
-	PERL_ASSERT(xs_obj != NULL);
-	xs_obj->ea_obj = ea_obj;
-	xs_obj->perl_obj = NULL;
-	sv_obj = NEWSV(0, 0);
-	PERL_ASSERT(sv_obj != NULL);
-
-	/*
-	 * Initialise according to the type of the passed exacct object,
-	 * and bless the perl object into the appropriate class.
-	 */
-	if (ea_obj->eo_type == EO_ITEM) {
-		if ((ea_obj->eo_catalog & EXT_TYPE_MASK) == EXT_EXACCT_OBJECT) {
-			INIT_EMBED_ITEM_FLAGS(xs_obj);
-		} else {
-			INIT_PLAIN_ITEM_FLAGS(xs_obj);
-		}
-		sv_setiv(newSVrv(sv_obj, NULL), PTR2IV(xs_obj));
-		sv_bless(sv_obj, Sun_Solaris_Exacct_Object_Item_stash);
-	} else {
-		INIT_GROUP_FLAGS(xs_obj);
-		sv_setiv(newSVrv(sv_obj, NULL), PTR2IV(xs_obj));
-		sv_bless(sv_obj, Sun_Solaris_Exacct_Object_Group_stash);
-	}
-
-	/*
-	 * We are passing back a pointer masquerading as a perl IV,
-	 * so make sure it can't be modified.
-	 */
-	SvREADONLY_on(SvRV(sv_obj));
-	return (sv_obj);
-}
-
-/*
- * Convert the perl form of an ::Object into the corresponding exacct form.
- * This is used prior to writing an ::Object to a file, or passing it to
- * putacct.  This is only required for embedded items and groups - for normal
- * items it is a no-op.
- */
-ea_object_t *
-deflate_xs_ea_object(SV *sv)
-{
-	xs_ea_object_t	*xs_obj;
-	ea_object_t	*ea_obj;
-
-	/* Get the source xs_ea_object_t. */
-	PERL_ASSERT(sv != NULL);
-	sv = SvRV(sv);
-	PERL_ASSERT(sv != NULL);
-	xs_obj = INT2PTR(xs_ea_object_t *, SvIV(sv));
-	PERL_ASSERT(xs_obj != NULL);
-	ea_obj = xs_obj->ea_obj;
-	PERL_ASSERT(ea_obj != NULL);
-
-	/* Break any list this object is a part of. */
-	ea_obj->eo_next = NULL;
-
-	/* Deal with Items containing embedded Objects. */
-	if (IS_EMBED_ITEM(xs_obj)) {
-		xs_ea_object_t	*child_xs_obj;
-		SV		*perl_obj;
-		size_t		bufsz;
-
-		/* Get the underlying perl object an deflate that in turn. */
-		perl_obj = xs_obj->perl_obj;
-		PERL_ASSERT(perl_obj != NULL);
-		deflate_xs_ea_object(perl_obj);
-		perl_obj = SvRV(perl_obj);
-		PERL_ASSERT(perl_obj != NULL);
-		child_xs_obj = INT2PTR(xs_ea_object_t *, SvIV(perl_obj));
-		PERL_ASSERT(child_xs_obj->ea_obj != NULL);
-
-		/* Free any existing object contents. */
-		if (ea_obj->eo_item.ei_object != NULL) {
-			ea_free(ea_obj->eo_item.ei_object,
-			    ea_obj->eo_item.ei_size);
-			ea_obj->eo_item.ei_object = NULL;
-			ea_obj->eo_item.ei_size = 0;
-		}
-
-		/*  Pack the object. */
-		while (1) {
-			/* Use the last buffer size as a best guess. */
-			if (last_bufsz != 0) {
-				ea_obj->eo_item.ei_object =
-				    ea_alloc(last_bufsz);
-				PERL_ASSERT(ea_obj->eo_item.ei_object != NULL);
-			} else {
-				ea_obj->eo_item.ei_object = NULL;
-			}
-
-			/*
-			 * Pack the object.  If the buffer is too small,
-			 * we will go around again with the correct size.
-			 * If unsucessful, we will bail.
-			 */
-			if ((bufsz = ea_pack_object(child_xs_obj->ea_obj,
-			    ea_obj->eo_item.ei_object, last_bufsz)) == -1) {
-				ea_free(ea_obj->eo_item.ei_object, last_bufsz);
-				ea_obj->eo_item.ei_object = NULL;
-				return (NULL);
-			} else if (bufsz > last_bufsz) {
-				ea_free(ea_obj->eo_item.ei_object, last_bufsz);
-				last_bufsz = bufsz;
-				continue;
-			} else {
-				ea_obj->eo_item.ei_size = bufsz;
-				break;
-			}
-		}
-
-	/* Deal with Groups. */
-	} else if (IS_GROUP(xs_obj)) {
-		MAGIC		*mg;
-		AV		*av;
-		int		len, i;
-		xs_ea_object_t	*ary_xs;
-		ea_object_t	*ary_ea, *prev_ea;
-
-		/* Find the AV underlying the tie. */
-		mg = mg_find(SvRV(xs_obj->perl_obj), 'P');
-		PERL_ASSERT(mg != NULL);
-		av = (AV*)SvRV(mg->mg_obj);
-		PERL_ASSERT(av != NULL);
-
-		/*
-		 * Step along the AV, deflating each object and linking it into
-		 * the exacct group item list.
-		 */
-		prev_ea = ary_ea = NULL;
-		len = av_len(av) + 1;
-		ea_obj->eo_group.eg_nobjs = 0;
-		ea_obj->eo_group.eg_objs = NULL;
-		for (i = 0; i < len; i++) {
-			/*
-			 * Get the source xs_ea_object_t.  If the current slot
-			 * in the array is empty, skip it.
-			 */
-			SV	**ary_svp;
-			if ((ary_svp = av_fetch(av, i, FALSE)) == NULL) {
-				continue;
-			}
-			PERL_ASSERT(*ary_svp != NULL);
-
-			/* Deflate it. */
-			ary_ea = deflate_xs_ea_object(*ary_svp);
-			PERL_ASSERT(ary_ea != NULL);
-
-			/* Link into the list. */
-			ary_ea->eo_next = NULL;
-			if (ea_obj->eo_group.eg_objs == NULL) {
-				ea_obj->eo_group.eg_objs = ary_ea;
-			}
-			ea_obj->eo_group.eg_nobjs++;
-			if (prev_ea != NULL) {
-				prev_ea->eo_next = ary_ea;
-			}
-			prev_ea = ary_ea;
-		}
-	}
-	return (ea_obj);
-}
-
-/*
- * Private Sun::Solaris::Exacct utility code.
- */
-
-/*
- * Return a string representation of an ea_error.
- */
-static const char *
-error_str(int eno)
-{
-	switch (eno) {
-	case EXR_OK:
-		return ("no error");
-	case EXR_SYSCALL_FAIL:
-		return ("system call failed");
-	case EXR_CORRUPT_FILE:
-		return ("corrupt file");
-	case EXR_EOF:
-		return ("end of file");
-	case EXR_NO_CREATOR:
-		return ("no creator");
-	case EXR_INVALID_BUF:
-		return ("invalid buffer");
-	case EXR_NOTSUPP:
-		return ("not supported");
-	case EXR_UNKN_VERSION:
-		return ("unknown version");
-	case EXR_INVALID_OBJ:
-		return ("invalid object");
-	default:
-		return ("unknown error");
-	}
-}
-
-/*
- * The XS code exported to perl is below here.  Note that the XS preprocessor
- * has its own commenting syntax, so all comments from this point on are in
- * that form.
- */
-
-MODULE = Sun::Solaris::Exacct PACKAGE = Sun::Solaris::Exacct
-PROTOTYPES: ENABLE
-
- #
- # Define the stash pointers if required and create and populate @_Constants.
- #
-BOOT:
-	init_stashes();
-	define_constants(PKGBASE, constants);
-
- #
- # Return the last exacct error as a dual-typed SV.  In a numeric context the
- # SV will evaluate to the value of an EXR_* constant, in string context to a
- # error message.
- #
-SV*
-ea_error()
-PREINIT:
-	int		eno;
-	const char	*msg;
-CODE:
-	eno = ea_error();
-	msg = error_str(eno);
-	RETVAL = newSViv(eno);
-	sv_setpv(RETVAL, (char*) msg);
-	SvIOK_on(RETVAL);
-OUTPUT:
-	RETVAL
-
- #
- # Return a string describing the last error to be encountered.  If the value
- # returned by ea_error is EXR_SYSCALL_FAIL, a string describing the value of
- # errno will be returned.  For all other values returned by ea_error() a string
- # describing the exacct error will be returned.
- #
-char*
-ea_error_str()
-PREINIT:
-	int	eno;
-CODE:
-	eno = ea_error();
-	if (eno == EXR_SYSCALL_FAIL) {
-		RETVAL = strerror(errno);
-		if (RETVAL == NULL) {
-			RETVAL = "unknown system error";
-		}
-	} else {
-		RETVAL = (char*) error_str(eno);
-	}
-OUTPUT:
-	RETVAL
-
- #
- # Return an accounting record for the specified task or process. idtype is
- # either P_TASKID or P_PID and id is a process or task id.
- #
-SV*
-getacct(idtype, id)
-	idtype_t	idtype;
-	id_t		id;
-PREINIT:
-	int		bufsz;
-	char		*buf;
-	ea_object_t	*ea_obj;
-CODE:
-	/* Get the required accounting buffer. */
-	while (1) {
-		/* Use the last buffer size as a best guess. */
-		if (last_bufsz != 0) {
-			buf = ea_alloc(last_bufsz);
-			PERL_ASSERT(buf != NULL);
-		} else {
-			buf = NULL;
-		}
-
-		/*
-		 * get the accounting record.  If the buffer is too small,
-		 * we will go around again with the correct size.
-		 * If unsucessful, we will bail.
-		 */
-		if ((bufsz = getacct(idtype, id, buf, last_bufsz)) == -1) {
-			if (last_bufsz != 0) {
-				ea_free(buf, last_bufsz);
-			}
-			XSRETURN_UNDEF;
-		} else if (bufsz > last_bufsz) {
-			ea_free(buf, last_bufsz);
-			last_bufsz = bufsz;
-			continue;
-		} else {
-			break;
-		}
-	}
-
-	/* Unpack the buffer. */
-	if (ea_unpack_object(&ea_obj, EUP_ALLOC, buf, bufsz) == -1) {
-		ea_free(buf, last_bufsz);
-		XSRETURN_UNDEF;
-	}
-	ea_free(buf, last_bufsz);
-	RETVAL = new_xs_ea_object(ea_obj);
-OUTPUT:
-	RETVAL
-
- #
- # Write an accounting record into the system accounting file. idtype is
- # either P_TASKID or P_PID and id is a process or task id.  value may be either
- # an ::Exacct::Object, in which case it will be packed and inserted in the
- # file, or a SV which will be converted to a string and inserted into the file.
- #
-SV*
-putacct(idtype, id, value)
-	idtype_t	idtype;
-	id_t		id;
-	SV		*value;
-PREINIT:
-	HV		*stash;
-	STRLEN		bufsz;
-	int		flags, ret;
-	char		*buf;
-CODE:
-	/* If it is an ::Object::Item or ::Object::Group, pack it. */
-	stash = SvROK(value) ? SvSTASH(SvRV(value)) : NULL;
-	if (stash == Sun_Solaris_Exacct_Object_Item_stash ||
-	    stash == Sun_Solaris_Exacct_Object_Group_stash) {
-		ea_object_t	*obj;
-
-		/* Deflate the object. */
-		if ((obj = deflate_xs_ea_object(value)) == NULL) {
-			XSRETURN_NO;
-		}
-
-		/*  Pack the object. */
-		while (1) {
-			/* Use the last buffer size as a best guess. */
-			if (last_bufsz != 0) {
-				buf = ea_alloc(last_bufsz);
-				PERL_ASSERT(buf != NULL);
-			} else {
-				buf = NULL;
-			}
-
-			/*
-			 * Pack the object.  If the buffer is too small, we
-			 * will go around again with the correct size.
-			 * If unsucessful, we will bail.
-			 */
-			if ((bufsz = ea_pack_object(obj, buf, last_bufsz))
-			    == -1) {
-				if (last_bufsz != 0) {
-					ea_free(buf, last_bufsz);
-				}
-				XSRETURN_NO;
-			} else if (bufsz > last_bufsz) {
-				ea_free(buf, last_bufsz);
-				last_bufsz = bufsz;
-				continue;
-			} else {
-				break;
-			}
-		}
-		flags = EP_EXACCT_OBJECT;
-
-	/* Otherwise treat it as normal SV - convert to a string. */
-	} else {
-		buf = SvPV(value, bufsz);
-		flags = EP_RAW;
-	}
-
-	/* Call putacct to write the buffer */
-	RETVAL = putacct(idtype, id, buf, bufsz, flags) == 0
-	    ? &PL_sv_yes : &PL_sv_no;
-
-	/*  Clean up if we allocated a buffer. */
-	if (flags == EP_EXACCT_OBJECT) {
-		ea_free(buf, last_bufsz);
-	}
-OUTPUT:
-	RETVAL
-
- #
- # Write an accounting record for the specified task or process.  idtype is
- # either P_TASKID or P_PID, id is a process or task id and flags is either
- # EW_PARTIAL or EW_INTERVAL.
- #
-int
-wracct(idtype, id, flags)
-	idtype_t	idtype;
-	id_t		id;
-	int		flags;
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/File/File.pm	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,42 +0,0 @@
-#
-# Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# File.pm contains wrappers for the exacct file manipulation routines.
-# 
-
-require 5.8.4;
-use strict;
-use warnings;
-
-package Sun::Solaris::Exacct::File;
-
-our $VERSION = '1.3';
-use XSLoader;
-XSLoader::load(__PACKAGE__, $VERSION);
-
-# @_Constants is set up by the XSUB bootstrap() function.
-our (@EXPORT_OK, %EXPORT_TAGS, @_Constants);
-@EXPORT_OK = @_Constants;
-%EXPORT_TAGS = (CONSTANTS => \@_Constants, ALL => \@EXPORT_OK);
-
-use base qw(Exporter);
-
-#
-# Extend the default Exporter::import to do optional inclusion of the
-# Fcntl module.
-#
-sub import
-{
-	# Do the normal export processing for this module.
-	__PACKAGE__->export_to_level(1, @_);
-
-	# Export from Fcntl if the tag is ':ALL'
-	if (grep(/^:ALL$/, @_)) {
-		require Fcntl;
-		Fcntl->export_to_level(1, undef, ':DEFAULT');
-	}
-}
-
-1;
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/File/File.xs	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,253 +0,0 @@
-/*
- * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
- *
- * File.xs contains XS code for exacct file manipulation.
- */
-
-#include <pwd.h>
-#include "../exacct_common.xh"
-
-/* Pull in the file generated by extract_defines. */
-#include "FileDefs.xi"
-
-/*
- * The XS code exported to perl is below here.  Note that the XS preprocessor
- * has its own commenting syntax, so all comments from this point on are in
- * that form.
- */
-
-MODULE = Sun::Solaris::Exacct::File PACKAGE = Sun::Solaris::Exacct::File
-PROTOTYPES: ENABLE
-
- #
- # Define the stash pointers if required and create and populate @_Constants.
- #
-BOOT:
-	{
-	init_stashes();
-	define_constants(PKGBASE "::File", constants);
-	}
-
- #
- # Open an exacct file and return an object with which to manipulate it.
- # The parameters are the filename, the open mode and a list of optional
- # (key => value) parameters where the key may be  one of creator, aflags or
- # mode.  For a full explanation of the various combinations, see the manpage
- # for ea_open_file(3EXACCT).
- #
-ea_file_t *
-new(class, name, oflags, ...)
-	char	*class;
-	char	*name;
-	int	oflags;
-PREINIT:
-	int	i;
-	/* Assume usernames are <= 32 chars (pwck(1M) assumes <= 8) */
-	char	user[33];
-	char	*creator = NULL;
-	int	aflags   = -1;
-	mode_t	mode     = 0666;
-CODE:
-	/*
-	 * Account for the mandatory parameters,
-	 * and the rest must be an even number.
-	 */
-	i = items - 3;
-	if ((i % 2) != 0) {
-		croak("Usage: Sun::Solaris::Exacct::File::new"
-		    "(class, name, oflags, ...)");
-	}
-
-	/* Process any optional parameters. */
-	for (i = 3; i < items; i += 2) {
-		if (strEQ(SvPV_nolen(ST(i)), "creator")) {
-			creator = SvPV_nolen(ST(i + 1));
-		} else if (strEQ(SvPV_nolen(ST(i)), "aflags")) {
-			aflags = SvIV(ST(i + 1));
-		} else if (strEQ(SvPV_nolen(ST(i)), "mode")) {
-			mode = SvIV(ST(i + 1));
-		} else {
-			croak("invalid named argument %s", SvPV_nolen(ST(i)));
-		}
-	}
-
-	/* Check and default the creator parameter. */
-	if (oflags & O_CREAT && creator == NULL) {
-		uid_t		uid;
-		struct passwd	*pwent;
-
-		uid = getuid();
-		if ((pwent = getpwuid(uid)) == NULL) {
-			snprintf(user, sizeof (user), "%d", uid);
-		} else {
-			strlcpy(user, pwent->pw_name, sizeof (user));
-		}
-		creator = user;
-	}
-
-	/* Check and default the aflags parameter. */
-	if (aflags == -1) {
-		if (oflags == O_RDONLY) {
-			aflags = EO_HEAD;
-		} else {
-			aflags = EO_TAIL;
-		}
-	}
-	RETVAL = ea_alloc(sizeof (ea_file_t));
-	PERL_ASSERT(RETVAL != NULL);
-	if (ea_open(RETVAL, name, creator, aflags, oflags, mode) == -1) {
-		ea_free(RETVAL, sizeof (ea_file_t));
-		RETVAL = NULL;
-	}
-OUTPUT:
-	RETVAL
-
-void
-DESTROY(self)
-	ea_file_t	*self;
-CODE:
-	ea_close(self);
-	ea_free(self, sizeof(ea_file_t));
-
- #
- # Return the creator of the file.
- #
-SV*
-creator(self)
-	ea_file_t	*self;
-PREINIT:
-	const char	*creator;
-CODE:
-	if ((creator = ea_get_creator(self)) == NULL) {
-		RETVAL = &PL_sv_undef;
-	} else {
-		RETVAL = newSVpv(creator, 0);
-	}
-OUTPUT:
-	RETVAL
-
- #
- # Return the hostname the file was created on.
- #
-SV*
-hostname(self)
-	ea_file_t	*self;
-PREINIT:
-	const char	*hostname;
-CODE:
-	if ((hostname = ea_get_hostname(self)) == NULL) {
-		RETVAL = &PL_sv_undef;
-	} else {
-		RETVAL = newSVpv(hostname, 0);
-	}
-OUTPUT:
-	RETVAL
-
- #
- # Get the next/previous record from the file and return its type.
- # These two operations are so similar that the XSUB ALIAS functionality is
- # used to merge them into one function.
- #
-void
-next(self)
-	ea_file_t	*self;
-ALIAS:
-	previous = 1
-PREINIT:
-	ea_object_type_t		type;
-	const char			*type_str;
-	ea_object_t			object;
-	SV				*sv;
-	static const char *const	type_map[] =
-	    { "EO_NONE", "EO_GROUP", "EO_ITEM" };
-PPCODE:
-	/* Call the appropriate next/last function. */
-	if (ix == 0) {
-		type = ea_next_object(self, &object);
-	} else {
-		type = ea_previous_object(self, &object);
-	}
-
-	/* Work out the call context. */
-	switch (GIMME_V) {
-	case G_SCALAR:
-		/* In a scalar context, just return the type. */
-		EXTEND(SP, 1);
-		if (type == EO_ERROR) {
-			PUSHs(&PL_sv_undef);
-		} else {
-			sv = newSVuv(type);
-			sv_setpv(sv, type_map[type]);
-			SvIOK_on(sv);
-			PUSHs(sv_2mortal(sv));
-		}
-		break;
-	case G_ARRAY:
-		/* In a list contect, return the type and catalog. */
-		EXTEND(SP, 2);
-		if (type == EO_ERROR) {
-			PUSHs(&PL_sv_undef);
-			PUSHs(&PL_sv_undef);
-		} else {
-			sv = newSVuv(type);
-			sv_setpv(sv, type_map[type]);
-			SvIOK_on(sv);
-			PUSHs(sv_2mortal(sv));
-			PUSHs(sv_2mortal(new_catalog(object.eo_catalog)));
-		}
-		break;
-	case G_VOID:
-	default:
-		/* In a void context, return nothing. */
-		break;
-	}
-
- #
- # Get the next object from the file and return as an ::Object.
- #
-SV*
-get(self)
-	ea_file_t	*self;
-PREINIT:
-	ea_object_t	*obj;
-CODE:
-	if ((obj = ea_get_object_tree(self, 1)) != NULL) {
-		RETVAL = new_xs_ea_object(obj);
-	} else {
-		RETVAL = &PL_sv_undef;
-	}
-OUTPUT:
-	RETVAL
-
- #
- # Write the passed list of ::Objects to the file.
- # Returns true on success and false on failure.
- #
-SV*
-write(self, ...)
-	ea_file_t	*self;
-PREINIT:
-	int		i;
-	SV		*sv;
-	HV		*stash;
-	ea_object_t	*obj;
-CODE:
-	for (i = 1; i < items; i++) {
-		/* Check the value is either an ::Item or a ::Group. */
-		sv = SvRV(ST(i));
-		stash = sv ? SvSTASH(sv) : NULL;
-		if (stash != Sun_Solaris_Exacct_Object_Item_stash &&
-		    stash != Sun_Solaris_Exacct_Object_Group_stash) {
-			XSRETURN_NO;
-		}
-
-		/* Deflate and write the object. */
-		obj = deflate_xs_ea_object(ST(i));
-		PERL_ASSERT(obj != NULL);
-		if (ea_write_object(self, obj) == -1) {
-			XSRETURN_NO;
-		}
-	}
-	RETVAL = &PL_sv_yes;
-OUTPUT:
-	RETVAL
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/File/Makefile.PL	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,139 +0,0 @@
-#
-# Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Makefile.PL for ::Exacct::File
-#
-
-# See ../Makefile.PL for an explanation of the linker flag manipulations.
-
-require 5.8.4;
-use strict;
-use warnings;
-use ExtUtils::MakeMaker;
-
-#
-# Some later versions of ExtUtils::MakeMaker are broken,
-# and complain about function redefinitions in the child Makefile.PLs.
-# Stop the warnings.
-#
-no warnings qw(redefine);
-
-our (@defines, @man3pods);
-
-#
-# MakeMaker overrides.
-#
-package MY;
-no warnings qw(once);
-
-#
-# Overrides that are common to both the ON and non-ON build environments.
-#
-
-#
-# Suppress the setting of LD_RUN_PATH, as it isn't necessary.
-#
-
-sub const_loadlibs
-{
-	my $self = shift(@_);
-	delete($self->{LD_RUN_PATH});
-	return($self->SUPER::const_loadlibs(@_));
-}
-
-sub dynamic_lib
-{
-	my $self = shift(@_);
-	my $txt = $self->SUPER::dynamic_lib(@_);
-	$txt =~ s/LD_RUN_PATH=\S*\s*//;
-	return($txt);
-}
-
-#
-# ON-specific overrides.
-#
-if (exists($ENV{CODEMGR_WS}) && exists($ENV{ENVCPPFLAGS1})) {
-	#
-	# Override postamble and replace it with one that explicitly records
-	# the dependency between File.c (generated from File.xs by xsubpp)
-	# and the FileDefs.xi file (generated from sys/exacct_catalog.h by
-	# extract_defines).  Note we have to mimic the -I processing done by cc
-	# to find the correct version of the file, as we want the copy from the
-	# proto area rather than /usr/include.  This ensures that the constant
-	# values exported by the perl module stay up-to date with the
-	# corresponding #defines.
-	#
-	*postamble = sub {
-		return <<'EOF';
-EXACCT_H:sh= \
-	for dir in $ENVCPPFLAGS1 $ENVCPPFLAGS2 $ENVCPPFLAGS3 $ENVCPPFLAGS4 \
-	    /usr/include; do \
-		dir=`expr $dir : '^-I\(.*\)$' \| $dir`; \
-		file="$dir/exacct.h"; \
-		test -f $file && echo $file && break; \
-	done;
-
-File.c:	FileDefs.xi
-
-FileDefs.xi:	../extract_defines $(EXACCT_H)
-	$(PERL) ../extract_defines File $@ $(EXACCT_H)
-EOF
-	};
-
-	# Enable/disable debugging as required.
-	@main::defines = ( DEFINE => '-DEXACCT_DEBUG' )
-	    if (! exists($ENV{RELEASE_BUILD}));
-
-	# Don't install POD pages for ON.
-	@main::man3pods = ( MAN3PODS => {} );
-
-#
-# Non-ON overrides.
-#
-} else {
-	#
-	# Override postamble and replace it with one that explicitly records
-	# the dependency between File.c (generated from File.xs by xsubpp)
-	# and the FileDefs.xi file (generated from /usr/include/exacct.h by
-	# extract_defines).  This ensures # that the constant values exported
-	# by the perl module stay up-to date with the corresponding #defines.
-	#
-	*postamble = sub {
-		return <<'EOF';
-EXACCT_H = /usr/include/exacct.h
-
-File.c:	FileDefs.xi
-
-FileDefs.xi:	../extract_defines $(EXACCT_H)
-	$(PERL) ../extract_defines File $@ $(EXACCT_H)
-EOF
-	};
-
-	# Install the POD documentation for non-ON builds.
-	my $man3pfx = '$(INST_MAN3DIR)/Sun::Solaris::Exacct';
-	@main::man3pods = (
-	    MAN3PODS => { '../pod/File.pod' =>
-	    $man3pfx . '::File.$(MAN3EXT)' }
-	);
-}
-
-#
-# Having set everything up, write the Makefile.
-#
-package main;
-
-WriteMakefile(
-    NAME         => 'Sun::Solaris::Exacct::File',
-    VERSION_FROM => 'File.pm',
-    H            => [ '../exacct_common.xh' ],
-    TYPEMAPS     => [ '../typemap' ],
-    @defines,
-    @man3pods,
-    dynamic_lib  => { OTHERLDFLAGS =>
-        '-h $(DLBASE).$(DLEXT) ' .
-        '-R\$$ORIGIN/.. $(INST_ARCHAUTODIR)/../Exacct.so'
-	},
-    realclean    => { FILES => 'FileDefs.xi' },
-);
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/MANIFEST	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,24 +0,0 @@
-Catalog/Catalog.pm
-Catalog/Catalog.xs
-Catalog/Makefile.PL
-Changes
-Exacct.pm
-Exacct.xs
-exacct_common.xh
-extract_defines
-File/File.pm
-File/File.xs
-File/Makefile.PL
-Makefile.PL
-MANIFEST
-Object/Makefile.PL
-Object/Object.pm
-Object/Object.xs
-pod/Catalog.pod
-pod/Exacct.pod
-pod/File.pod
-pod/Group.pod
-pod/Item.pod
-pod/Object.pod
-README
-typemap
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/Makefile.PL	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,173 +0,0 @@
-#
-# Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Makefile.PL for ::Exacct
-#
-
-#
-# Linker flags note:
-# The various .so files that comprise the ::Exacct module need to be able to
-# cross-call each other, and therefore to prevent runtime linker errors it is
-# necessary to establish linker dependencies between the various .so files.
-#
-# This causes several problems.  The first of these is that perl .so files are
-# built in one directory (under ../blib in this case) and installed into
-# another, so it is necessary to record the dependency using a path relative to
-# the dependent. This can be done with the $ORIGIN linker mechanism.
-
-# The second problem is that it is necessary to specify the name of the
-# dependee at link edit time in a manner that doesn't result in the build-time
-# path of the dependee being hard coded in to the dependent, as this would
-# stop ld.so.1 performing its normal search process for the files.  This can't
-# be done with the normal '--L/my/lib/path -lmylib' mechanism, because the XSUB
-# .so files aren't prefixed with 'lib'.  To do this the -h linker flag is used
-# to explicitly set the SONAME in the dependee.  This is then used as the name
-# of the dependent in the dependee rather than the full path by which it was
-# found at link edit time.
-#
-# For more details, refer to the Linker and Libraries Guide.
-#
-
-require 5.8.4;
-use strict;
-use warnings;
-use ExtUtils::MakeMaker;
-
-our (@defines, @man3pods);
-
-#
-# MakeMaker overrides.
-#
-package MY;
-no warnings qw(once);
-
-#
-# Overrides that are common to both the ON and non-ON build environments.
-#
-
-#
-# Force the parent directory to be built first, because the sub-modules all
-# have a linker dependency against Exacct.so.
-#
-sub top_targets
-{
-	my $self = shift(@_);
-	my $txt = $self->SUPER::top_targets(@_);
-	$txt =~ s/pm_to_blib subdirs/pm_to_blib \$(LINKTYPE) .WAIT subdirs/;
-	return($txt);
-}
-
-#
-# Make 'install' wait for 'all' to complete.
-#
-sub install
-{
-	my $self = shift(@_);
-	my $txt = $self->SUPER::install(@_);
-	$txt =~ s/ all / all .WAIT /g;
-	return($txt);
-}
-
-#
-# Suppress the setting of LD_RUN_PATH, as it isn't necessary.
-#
-sub const_loadlibs
-{
-	my $self = shift(@_);
-	delete($self->{LD_RUN_PATH});
-	return($self->SUPER::const_loadlibs(@_));
-}
-
-sub dynamic_lib
-{
-	my $self = shift(@_);
-	my $txt = $self->SUPER::dynamic_lib(@_);
-	$txt =~ s/LD_RUN_PATH=\S*\s*//;
-	return($txt);
-}
-
-#
-# ON-specific overrides.
-#
-if (exists($ENV{CODEMGR_WS}) && exists($ENV{ENVCPPFLAGS1})) {
-	#
-	# Override postamble and replace it with one that explicitly records
-	# the dependency between Exacct.c (generated from Exacct.xs by xsubpp)
-	# and the ExacctDefs.xi file (generated from sys/exacct.h by
-	# extract_defines).  Note we have to mimic the -I processing done by cc
-	# to find the correct version of the file, as we want the copy from the
-	# proto area rather than /usr/include.  This ensures that the constant
-	# values exported by the perl module stay up-to date with the
-	# corresponding #defines.
-	#
-	*postamble = sub {
-		return <<'EOF';
-EXACCT_H:sh= \
-	for dir in $ENVCPPFLAGS1 $ENVCPPFLAGS2 $ENVCPPFLAGS3 $ENVCPPFLAGS4 \
-	    /usr/include; do \
-		dir=`expr $dir : '^-I\(.*\)$' \| $dir`; \
-		file="$dir/sys/exacct.h"; \
-		test -f $file && echo $file && break; \
-	done;
-
-Exacct.c:	ExacctDefs.xi
-
-ExacctDefs.xi:	extract_defines $(EXACCT_H)
-	$(PERL) extract_defines Exacct $@ $(EXACCT_H)
-EOF
-	};
-
-	# Enable/disable debugging as required.
-	@main::defines = ( DEFINE => '-DEXACCT_DEBUG' )
-	    if (! exists($ENV{RELEASE_BUILD}));
-
-	# Don't install POD pages for ON.
-	@main::man3pods = ( MAN3PODS => {} );
-
-#
-# Non-ON overrides.
-#
-} else {
-	#
-	# Override postamble and replace it with one that explicitly records
-	# the dependency between Exacct.c (generated from Exacct.xs by xsubpp)
-	# and the ExacctDefs.xi file (generated from /usr/include/sys/exacct.h
-	# by extract_defines).  This ensures that the constant values exported
-	# by the perl module stay up-to date with the corresponding #defines.
-	#
-	*postamble = sub {
-		return <<'EOF';
-EXACCT_H = /usr/include/sys/exacct.h
-
-Exacct.c:	ExacctDefs.xi
-
-ExacctDefs.xi:	extract_defines $(EXACCT_H)
-	$(PERL) extract_defines Exacct $@ $(EXACCT_H)
-EOF
-	};
-
-	# Install the POD documentation for non-ON builds.
-	my $man3pfx = '$(INST_MAN3DIR)/Sun::Solaris::Exacct';
-	@main::man3pods = (
-	    MAN3PODS => { 'pod/Exacct.pod' => $man3pfx . '.$(MAN3EXT)' }
-	);
-}
-
-#
-# Having set everything up, write the Makefile.
-#
-package main;
-
-WriteMakefile(
-    NAME         => 'Sun::Solaris::Exacct',
-    VERSION_FROM => 'Exacct.pm',
-    DIR          => [ qw(Catalog File Object) ],
-    H            => [ 'exacct_common.xh' ],
-    LIBS         => [ '-lexacct' ],
-    @defines,
-    @man3pods,
-    dynamic_lib  => { OTHERLDFLAGS => '-h $(DLBASE).$(DLEXT)' },
-    realclean    => { FILES => 'ExacctDefs.xi' },
-);
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/Object/Makefile.PL	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,141 +0,0 @@
-#
-# Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Makefile.PL for ::Exacct::Object
-#
-
-# See ../Makefile.PL for an explanation of the linker flag manipulations.
-
-require 5.8.4;
-use strict;
-use warnings;
-use ExtUtils::MakeMaker;
-
-#
-# Some later versions of ExtUtils::MakeMaker are broken,
-# and complain about function redefinitions in the child Makefile.PLs.
-# Stop the warnings.
-#
-no warnings qw(redefine);
-
-our (@defines, @man3pods);
-
-#
-# MakeMaker overrides.
-#
-package MY;
-no warnings qw(once);
-
-#
-# Overrides that are common to both the ON and non-ON build environments.
-#
-
-#
-# Suppress the setting of LD_RUN_PATH, as it isn't necessary.
-#
-
-sub const_loadlibs
-{
-	my $self = shift(@_);
-	delete($self->{LD_RUN_PATH});
-	return($self->SUPER::const_loadlibs(@_));
-}
-
-sub dynamic_lib
-{
-	my $self = shift(@_);
-	my $txt = $self->SUPER::dynamic_lib(@_);
-	$txt =~ s/LD_RUN_PATH=\S*\s*//;
-	return($txt);
-}
-
-#
-# ON-specific overrides.
-#
-if (exists($ENV{CODEMGR_WS}) && exists($ENV{ENVCPPFLAGS1})) {
-	#
-	# Override postamble and replace it with one that explicitly records
-	# the dependency between Object.c (generated from Object.xs by xsubpp)
-	# and the ObjectDefs.xi file (generated from sys/exacct.h by
-	# extract_defines).  Note we have to mimic the -I processing done by cc
-	# to find the correct version of the file, as we want the copy from the
-	# proto area rather than /usr/include.  This ensures that the constant
-	# values exported by the perl module stay up-to date with the
-	# corresponding #defines.
-	#
-	*postamble = sub {
-		return <<'EOF';
-EXACCT_H:sh= \
-	for dir in $ENVCPPFLAGS1 $ENVCPPFLAGS2 $ENVCPPFLAGS3 $ENVCPPFLAGS4 \
-	    /usr/include; do \
-		dir=`expr $dir : '^-I\(.*\)$' \| $dir`; \
-		file="$dir/sys/exacct.h"; \
-		test -f $file && echo $file && break; \
-	done;
-
-Object.c:	ObjectDefs.xi
-
-ObjectDefs.xi:	../extract_defines $(EXACCT_H)
-	$(PERL) ../extract_defines Object $@ $(EXACCT_H)
-EOF
-	};
-
-	# Enable/disable debugging as required.
-	@main::defines = ( DEFINE => '-DEXACCT_DEBUG' )
-	    if (! exists($ENV{RELEASE_BUILD}));
-
-	# Don't install POD pages for ON.
-	@main::man3pods = ( MAN3PODS => {} );
-
-#
-# Non-ON overrides.
-#
-} else {
-	#
-	# Override postamble and replace it with one that explicitly records
-	# the dependency between Object.c (generated from Object.xs by xsubpp)
-	# and the ObjectDefs.xi file (generated from /usr/include/sys/exacct.h
-	# by # extract_defines).  This ensures # that the constant values
-	# exported by the perl module stay up-to date with the corresponding
-	# #defines.
-	#
-	*postamble = sub {
-		return <<'EOF';
-EXACCT_H = /usr/include/sys/exacct.h
-
-Object.c:	ObjectDefs.xi
-
-ObjectDefs.xi:	../extract_defines $(EXACCT_H)
-	$(PERL) ../extract_defines Object $@ $(EXACCT_H)
-EOF
-	};
-
-	# Install the POD documentation for non-ON builds.
-	my $man3pfx = '$(INST_MAN3DIR)/Sun::Solaris::Exacct';
-	@main::man3pods = ( MAN3PODS => {
-	    '../pod/Object.pod' => $man3pfx . '::Object.$(MAN3EXT)',
-	    '../pod/Item.pod' => $man3pfx . '::Object::Item.$(MAN3EXT)',
-	    '../pod/Group.pod' => $man3pfx . '::Object::Group.$(MAN3EXT)'
-	});
-}
-
-#
-# Having set everything up, write the Makefile.
-#
-package main;
-
-WriteMakefile(
-    NAME         => 'Sun::Solaris::Exacct::Object',
-    VERSION_FROM => 'Object.pm',
-    H            => [ '../exacct_common.xh' ],
-    TYPEMAPS     => [ '../typemap' ],
-    @defines,
-    @man3pods,
-    dynamic_lib  => { OTHERLDFLAGS =>
-        '-h $(DLBASE).$(DLEXT) ' .
-        '-R\$$ORIGIN/.. $(INST_ARCHAUTODIR)/../Exacct.so'
-	},
-    realclean    => { FILES => 'ObjectDefs.xi' },
-);
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/Object/Object.pm	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,195 +0,0 @@
-#
-# Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Object.pm contains perl code for exacct object manipulation.
-#
-
-require 5.8.4;
-use strict;
-use warnings;
-
-package Sun::Solaris::Exacct::Object;
-
-our $VERSION = '1.3';
-use XSLoader;
-XSLoader::load(__PACKAGE__, $VERSION);
-
-our (@EXPORT_OK, %EXPORT_TAGS, @_Constants);
-@EXPORT_OK = @_Constants;
-%EXPORT_TAGS = (CONSTANTS => \@_Constants, ALL => \@EXPORT_OK);
-
-use base qw(Exporter);
-use Sun::Solaris::Exacct::Catalog qw(:CONSTANTS);
-
-#
-# Class methods
-#
-
-#
-# Dump an exacct object to the specified filehandle, or STDOUT by default.
-#
-sub dump
-{
-	# Fettle parameters.
-	my ($class, $obj, $fh, $indent) = @_;
-	$fh ||= \*STDOUT;
-	$indent ||= 0;
-	my $istr = '  ' x $indent;
-	
-	# Check for undef values.
-	if (! defined($obj)) {
-		print $fh ($istr, "UNDEFINED_VALUE\n");
-		return;
-	}
-
-	# Deal with items.
-	my @cat = $obj->catalog()->value();
-	if ($obj->type() == &EO_ITEM) {
-		printf $fh ("%sITEM\n%s  Catalog = %s|%s|%s\n", 
-		   $istr, $istr, @cat);
-		$indent++;
-		my $val = $obj->value();
-
-		# Recursively dump nested objects.
-		if (ref($val)) {
-			$class->dump($val, $fh, $indent);
-
-		# Just print out items.
-		} else {
-			$val = unpack('H*', $val) if ($cat[0] == &EXT_RAW);
-			printf $fh ("%s  Value = %s\n", $istr, $val);
-		}
-
-	# Deal with groups.
-	} else {
-		printf $fh ("%sGROUP\n%s  Catalog = %s|%s|%s\n",
-		    $istr, $istr, @cat);
-		$indent++;
-		foreach my $val ($obj->value()) {
-			$class->dump($val, $fh, $indent);
-		}
-		printf $fh ("%sENDGROUP\n", $istr);
-	}
-}
-
-#
-# Item subclass - establish inheritance.
-#
-package Sun::Solaris::Exacct::Object::Item;
-use base qw(Sun::Solaris::Exacct::Object);
-
-#
-# Group subclass - establish inheritance.
-#
-package Sun::Solaris::Exacct::Object::Group;
-use base qw(Sun::Solaris::Exacct::Object);
-
-#
-# Tied array used for holding a group's items.
-#
-package Sun::Solaris::Exacct::Object::_Array;
-use Carp;
-
-#
-# Check the passed list of arguments are derived from ::Object
-#
-sub check_args
-{
-	my @duff;
-	foreach my $i (@_) {
-		push(@duff, $i)
-		    if (! UNIVERSAL::isa($i, 'Sun::Solaris::Exacct::Object'));
-	}
-	if (@duff) {
-		local $Carp::CarpLevel = 2;
-		croak('"', join('", "', @duff), @duff == 1 ? '" is' : '" are',
-		    ' not of type Sun::Solaris::Exacct::Object');
-	}
-}
-
-#
-# Tied hash access methods
-#
-sub TIEARRAY 
-{ 
-	return(bless([], $_[0]));
-}
-
-sub FETCHSIZE
-{
-	return(scalar(@{$_[0]}));
-}             
-
-sub STORESIZE
-{
-	$#{$_[0]} = $_[1] - 1;
-}  
-
-sub STORE
-{
-	check_args($_[2]);
-	return($_[0]->[$_[1]] = copy_xs_ea_objects($_[2]));
-}
-
-sub FETCH
-{
-	return($_[0]->[$_[1]]);
-}
-
-sub CLEAR
-{
-	@{$_[0]} = ();
-}
-
-sub POP
-{
-	return(pop(@{$_[0]}));
-} 
-
-sub PUSH
-{
-	my $a = shift(@_);
-	check_args(@_);
-	push(@$a, copy_xs_ea_objects(@_));
-}
-
-sub SHIFT
-{
-	return(shift(@{$_[0]}));
-} 
-
-sub UNSHIFT
-{
-	my $a = shift(@_);
-	check_args($_[2]);
-	return(unshift(@$a, copy_xs_ea_objects(@_)));
-} 
-
-sub EXISTS
-{
-	return(exists($_[0]->[$_[1]]));
-}
-
-sub DELETE
-{
-	return(delete($_[0]->[$_[1]]));
-}
-
-sub EXTEND
-{
-}
-
-sub SPLICE
-{
-	my $a = shift(@_);                    
- 	my $sz = scalar(@$a);
-	my $off = @_ ? shift(@_) : 0;
-	$off += $sz if $off < 0;
-	my $len = @_ ? shift : $sz - $off;
-	check_args(@_);
-	return(splice(@$a, $off, $len, copy_xs_ea_objects(@_)));
-}
-
-1;
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/Object/Object.xs	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,687 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
- * 
- * Object.xs contains XS code for exacct file manipulation.
- */
-
-#include <strings.h>
-#include "../exacct_common.xh"
-
-/* Pull in the file generated by extract_defines. */
-#include "ObjectDefs.xi"
-
-/* From Catalog.xs. */
-extern char *catalog_id_str(ea_catalog_t catalog);
-
-/*
- * Copy an xs_ea_object_t.  If the perl_obj part is null, we just copy the
- * ea_object_t part.  If the perl_obj part is not null and the Object is an
- * Item it must be because the Item contains an embedded Object, which will be
- * recursively copied.  Otherwise the Object must be a Group, so the Group will
- * be copied, and the list of Objects it contains will be recursively copied.
- */
-static SV *
-copy_xs_ea_object(SV *src_sv)
-{
-	xs_ea_object_t	*src, *dst;
-	SV		*dst_sv, *dst_rv;
-
-	/* Get the source xs_ea_object_t and make a new one. */
-	PERL_ASSERT(src_sv != NULL);
-	src_sv = SvRV(src_sv);
-	PERL_ASSERT(src_sv != NULL);
-	src = INT2PTR(xs_ea_object_t *, SvIV(src_sv));
-	PERL_ASSERT(src != NULL);
-	New(0, dst, 1, xs_ea_object_t);
-	dst->flags = src->flags;
-
-	/* If the Object is a plain Item only the ea_obj part needs copying. */
-	if (IS_PLAIN_ITEM(src)) {
-		dst->ea_obj = ea_copy_object_tree(src->ea_obj);
-		PERL_ASSERT(dst->ea_obj != NULL);
-		dst->perl_obj = NULL;
-
-	/*
-	 * Otherwise if it is an Item with a perl_obj part, it means that it
-	 * must be an Item containing an unpacked nested Object.  In this case
-	 * the nested Object can be copied by a recursive call.
-	 */
-	} else if (IS_EMBED_ITEM(src)) {
-		dst->ea_obj = ea_copy_object(src->ea_obj);
-		PERL_ASSERT(dst->ea_obj != NULL);
-		dst->perl_obj = copy_xs_ea_object(src->perl_obj);
-
-	/*
-	 * If we get here it must be a Group, so perl_obj will point to a tied
-	 * AV.  We therefore copy the exacct part then create a new tied array
-	 * and recursively copy each Item individually.
-	 */
-	} else {
-		MAGIC	*mg;
-		AV	*src_av, *dst_av, *tied_av;
-		SV	*sv;
-		int	i, len;
-
-		/* Copy the exacct part of the Group. */
-		dst->ea_obj = ea_copy_object(src->ea_obj);
-		PERL_ASSERT(dst->ea_obj != NULL);
-
-		/* Find the AV underlying the tie. */
-		mg = mg_find(SvRV(src->perl_obj), 'P');
-		PERL_ASSERT(mg != NULL);
-		src_av = (AV *)SvRV(mg->mg_obj);
-		PERL_ASSERT(src_av != NULL);
-
-		/* Create a new AV and copy across into it. */
-		dst_av = newAV();
-		len = av_len(src_av) + 1;
-		av_extend(dst_av, len);
-		for (i = 0; i < len; i++) {
-			SV **svp;
-
-			/* undef elements don't need copying. */
-			if ((svp = av_fetch(src_av, i, FALSE)) != NULL) {
-				sv = copy_xs_ea_object(*svp);
-				if (av_store(dst_av, i, sv) == NULL) {
-					SvREFCNT_dec(sv);
-				}
-			}
-		}
-
-		/* Create a new AV and tie the filled AV to it. */
-		sv = newRV_noinc((SV *)dst_av);
-		sv_bless(sv, Sun_Solaris_Exacct_Object__Array_stash);
-		tied_av = newAV();
-		sv_magic((SV *)tied_av, sv, 'P', Nullch, 0);
-		SvREFCNT_dec(sv);
-		dst->perl_obj = newRV_noinc((SV *)tied_av);
-	}
-
-	/* Wrap the new xs_ea_object_t in a blessed RV and return it.  */
-	dst_sv = newSViv(PTR2IV(dst));
-	dst_rv = newRV_noinc(dst_sv);
-	sv_bless(dst_rv, SvSTASH(src_sv));
-	SvREADONLY_on(dst_sv);
-	return (dst_rv);
-}
-
-/*
- * If an ea_xs_object_t only has the ea_obj part populated, create the
- * corresponding perl_obj part.  For plain Items this is a no-op.  If the
- * object is embedded, the embedded part will be unpacked and stored in the
- * perl part.  If the object is a Group, the linked list of Items will be
- * wrapped in the corresponding perl structure and stored in a tied perl array.
- */
-static int
-inflate_xs_ea_object(xs_ea_object_t *xs_obj)
-{
-	ea_object_t	*ea_obj;
-
-	/* Check there is not already a perl_obj part. */
-	PERL_ASSERT(xs_obj != NULL);
-	PERL_ASSERT(xs_obj->perl_obj == NULL);
-
-	/* Deal with Items containing embedded Objects. */
-	if (IS_EMBED_ITEM(xs_obj)) {
-		/* unpack & wrap in an xs_ea_object_t. */
-		if (ea_unpack_object(&ea_obj, EUP_ALLOC,
-		    xs_obj->ea_obj->eo_item.ei_object,
-		    xs_obj->ea_obj->eo_item.ei_size) == -1) {
-			return (0);
-		}
-		xs_obj->perl_obj = new_xs_ea_object(ea_obj);
-
-	/* Deal with Groups. */
-	} else if (IS_GROUP(xs_obj)) {
-		int	i, len;
-		AV	*av, *tied_av;
-		SV	*rv, *sv;
-
-		/* Create a new array. */
-		av = newAV();
-		ea_obj = xs_obj->ea_obj;
-		len = ea_obj->eo_group.eg_nobjs;
-		ea_obj = ea_obj->eo_group.eg_objs;
-
-		/* Copy each object from the old array into the new array. */
-		for (i = 0; i < len; i++) {
-			rv = new_xs_ea_object(ea_obj);
-			if (av_store(av, i, rv) == NULL) {
-				SvREFCNT_dec(rv);
-			}
-			ea_obj = ea_obj->eo_next;
-		}
-
-		/* Create a new AV and tie the filled AV to it. */
-		rv = newRV_noinc((SV *)av);
-		sv_bless(rv, Sun_Solaris_Exacct_Object__Array_stash);
-		tied_av = newAV();
-		sv_magic((SV *)tied_av, rv, 'P', Nullch, 0);
-		SvREFCNT_dec(rv);
-		xs_obj->perl_obj = newRV_noinc((SV *)tied_av);
-	}
-	return (1);
-}
-
-/*
- * The XS code exported to perl is below here.  Note that the XS preprocessor
- * has its own commenting syntax, so all comments from this point on are in
- * that form.
- */
-
-MODULE = Sun::Solaris::Exacct::Object PACKAGE = Sun::Solaris::Exacct::Object
-PROTOTYPES: ENABLE
-
- #
- # Define the stash pointers if required and create and populate @_Constants.
- #
-BOOT:
-	{
-	init_stashes();
-	define_constants(PKGBASE "::Object", constants);
-	}
-
- #
- # Return a dual-typed SV containing the type of the object.
- #
-SV *
-type(self)
-	xs_ea_object_t	*self;
-CODE:
-	RETVAL = newSViv(self->ea_obj->eo_type);
-	switch (self->ea_obj->eo_type) {
-	case EO_ITEM:
-		sv_setpv(RETVAL, "EO_ITEM");
-		break;
-	case EO_GROUP:
-		sv_setpv(RETVAL, "EO_GROUP");
-		break;
-	case EO_NONE:
-	default:
-		sv_setpv(RETVAL, "EO_NONE");
-		break;
-	}
-	SvIOK_on(RETVAL);
-OUTPUT:
-	RETVAL
-
- #
- # Return a copy of the catalog of the object.
- #
-SV *
-catalog(self)
-	xs_ea_object_t	*self;
-CODE:
-	RETVAL = new_catalog(self->ea_obj->eo_catalog);
-OUTPUT:
-	RETVAL
-
- #
- # Return the value of the object.  For simple Items, a SV containing the value
- # of the underlying exacct ea_item_t is returned.  For nested Items or Groups,
- # a reference to the nested Item or Group is returned.  For Groups, in a scalar
- # context a reference to the tied array used to store the objects in the Group
- # is returned; in a list context the objects within the Group are returned on
- # the perl stack as a list.
- #
-void
-value(self)
-	xs_ea_object_t	*self;
-PPCODE:
-	/*
-	 * For Items, return the perl representation
-	 * of the underlying ea_object_t.
-	 */
-	if (IS_ITEM(self)) {
-		SV	*retval;
-
-		switch (self->ea_obj->eo_catalog & EXT_TYPE_MASK) {
-		case EXT_UINT8:
-			retval = newSVuv(self->ea_obj->eo_item.ei_uint8);
-			break;
-		case EXT_UINT16:
-			retval = newSVuv(self->ea_obj->eo_item.ei_uint16);
-			break;
-		case EXT_UINT32:
-			retval = newSVuv(self->ea_obj->eo_item.ei_uint32);
-			break;
-		case EXT_UINT64:
-			retval = newSVuv(self->ea_obj->eo_item.ei_uint64);
-			break;
-		case EXT_DOUBLE:
-			retval = newSVnv(self->ea_obj->eo_item.ei_double);
-			break;
-		case EXT_STRING:
-			retval = newSVpvn(self->ea_obj->eo_item.ei_string,
-			    self->ea_obj->eo_item.ei_size - 1);
-			break;
-		case EXT_RAW:
-			retval = newSVpvn(self->ea_obj->eo_item.ei_raw,
-			    self->ea_obj->eo_item.ei_size);
-			break;
-		/*
-		 * For embedded objects and Groups, return a ref to the perl SV.
-		 */
-		case EXT_EXACCT_OBJECT:
-			if (self->perl_obj == NULL) {
-				/* Make sure the object is inflated. */
-				if (! inflate_xs_ea_object(self)) {
-					XSRETURN_UNDEF;
-				}
-			}
-			retval = SvREFCNT_inc(self->perl_obj);
-			break;
-		case EXT_GROUP:
-			retval = SvREFCNT_inc(self->perl_obj);
-			break;
-		case EXT_NONE:
-		default:
-			croak("Invalid object type");
-			break;
-		}
-		EXTEND(SP, 1);
-		PUSHs(sv_2mortal(retval));
-
-	/*
-	 * Now we deal with Groups.
-	 */
-	} else {
-		/* Make sure the object is inflated. */
-		if (self->perl_obj == NULL) {
-			if (! inflate_xs_ea_object(self)) {
-				XSRETURN_UNDEF;
-			}
-		}
-
-		/* In a list context return the contents of the AV. */
-		if (GIMME_V == G_ARRAY) {
-			MAGIC   *mg;
-			AV	*av;
-			int	len, i;
-
-			/* Find the AV underlying the tie. */
-			mg = mg_find(SvRV(self->perl_obj), 'P');
-			PERL_ASSERT(mg != NULL);
-			av = (AV *)SvRV(mg->mg_obj);
-			PERL_ASSERT(av != NULL);
-
-			/*
-			 * Push the contents of the array onto the stack.
-			 * Push undef for any empty array slots.
-			 */
-			len = av_len(av) + 1;
-			EXTEND(SP, len);
-			for (i = 0; i < len; i++) {
-				SV	**svp;
-
-			if ((svp = av_fetch(av, i, FALSE)) == NULL) {
-					PUSHs(&PL_sv_undef);
-				} else {
-					PERL_ASSERT(*svp != NULL);
-					PUSHs(sv_2mortal(SvREFCNT_inc(*svp)));
-				}
-			}
-
-		/* In a scalar context, return a ref to the array of Items. */
-		} else {
-			EXTEND(SP, 1);
-			PUSHs(sv_2mortal(SvREFCNT_inc(self->perl_obj)));
-		}
-	}
-
- #
- # Call the ea_match_catalog function.
- #
-int
-match_catalog(self, catalog)
-	xs_ea_object_t	*self;
-	SV		*catalog;
-CODE:
-	RETVAL = ea_match_object_catalog(self->ea_obj, catalog_value(catalog));
-OUTPUT:
-	RETVAL
-
- #
- # Destroy an Object.
- #
-void
-DESTROY(self)
-	xs_ea_object_t	*self;
-PREINIT:
-	ea_object_t	*ea_obj;
-	SV		*perl_obj;
-CODE:
-	/*
-	 * Because both libexacct and perl know about the ea_object_t, we have
-	 * to make sure that they don't both end up freeing the object.  First
-	 * we break any link to the next ea_object_t in the chain.  Next, if
-	 * the object is a Group and there is an active perl_obj chain, we will
-	 * let perl clean up the Objects, so we zero the eo_group chain.
-	 */
-	perl_obj = self->perl_obj;
-	ea_obj = self->ea_obj;
-	ea_obj->eo_next = NULL;
-	if (IS_GROUP(self) && perl_obj != NULL) {
-		ea_obj->eo_group.eg_nobjs = 0;
-		ea_obj->eo_group.eg_objs = NULL;
-	}
-	ea_free_object(ea_obj, EUP_ALLOC);
-	if (perl_obj != NULL) {
-		SvREFCNT_dec(perl_obj);
-	}
-	Safefree(self);
-
-MODULE = Sun::Solaris::Exacct::Object PACKAGE = Sun::Solaris::Exacct::Object::Item
-PROTOTYPES: ENABLE
-
- #
- # Create a new Item.
- #
-xs_ea_object_t *
-new(class, catalog, value)
-	char	*class;
-	SV	*catalog;
-	SV	*value;
-PREINIT:
-	ea_object_t	*ea_obj;
-	HV		*stash;
-CODE:
-	/* Create a new xs_ea_object_t and subsiduary structures. */
-	New(0, RETVAL, 1, xs_ea_object_t);
-	RETVAL->ea_obj = ea_obj = ea_alloc(sizeof (ea_object_t));
-	bzero(ea_obj, sizeof (*ea_obj));
-	ea_obj->eo_type = EO_ITEM;
-	ea_obj->eo_catalog = catalog_value(catalog);
-	INIT_PLAIN_ITEM_FLAGS(RETVAL);
-	RETVAL->perl_obj = NULL;
-
-	/* Assign the Item's value. */
-	switch (ea_obj->eo_catalog & EXT_TYPE_MASK) {
-	case EXT_UINT8:
-		ea_obj->eo_item.ei_uint8 = SvIV(value);
-		ea_obj->eo_item.ei_size = sizeof (uint8_t);
-		break;
-	case EXT_UINT16:
-		ea_obj->eo_item.ei_uint16 = SvIV(value);
-		ea_obj->eo_item.ei_size = sizeof (uint16_t);
-		break;
-	case EXT_UINT32:
-		ea_obj->eo_item.ei_uint32 = SvIV(value);
-		ea_obj->eo_item.ei_size = sizeof (uint32_t);
-		break;
-	case EXT_UINT64:
-		ea_obj->eo_item.ei_uint64 = SvIV(value);
-		ea_obj->eo_item.ei_size = sizeof (uint64_t);
-		break;
-	case EXT_DOUBLE:
-		ea_obj->eo_item.ei_double = SvNV(value);
-		ea_obj->eo_item.ei_size = sizeof (double);
-		break;
-	case EXT_STRING:
-		ea_obj->eo_item.ei_string = ea_strdup(SvPV_nolen(value));
-		ea_obj->eo_item.ei_size = SvCUR(value) + 1;
-		break;
-	case EXT_RAW:
-		ea_obj->eo_item.ei_size = SvCUR(value);
-		ea_obj->eo_item.ei_raw = ea_alloc(ea_obj->eo_item.ei_size);
-		bcopy(SvPV_nolen(value), ea_obj->eo_item.ei_raw,
-		    (size_t)ea_obj->eo_item.ei_size);
-		break;
-	case EXT_EXACCT_OBJECT:
-		/*
-		 * The ea_obj part is initially empty, and will be populated
-		 * from the perl_obj part  when required.
-		 */
-		stash = SvROK(value) ? SvSTASH(SvRV(value)) : NULL;
-		if (stash != Sun_Solaris_Exacct_Object_Item_stash &&
-		    stash != Sun_Solaris_Exacct_Object_Group_stash) {
-			croak("value is not of type " PKGBASE "::Object");
-		}
-		RETVAL->perl_obj = copy_xs_ea_object(value);
-		ea_obj->eo_item.ei_object = NULL;
-		ea_obj->eo_item.ei_size = 0;
-		INIT_EMBED_ITEM_FLAGS(RETVAL);
-		break;
-	/*
-	 * EXT_NONE is an invalid type,
-	 * EXT_GROUP is created by the Group subclass constructor.
-	 */
-	case EXT_NONE:
-	case EXT_GROUP:
-	default:
-		ea_free(RETVAL->ea_obj, sizeof (RETVAL->ea_obj));
-		Safefree(RETVAL);
-		croak("Invalid object type");
-		break;
-	}
-OUTPUT:
-	RETVAL
-
-MODULE = Sun::Solaris::Exacct::Object PACKAGE = Sun::Solaris::Exacct::Object::Group
-PROTOTYPES: ENABLE
-
-xs_ea_object_t *
-new(class, catalog, ...)
-	char	*class;
-	SV	*catalog;
-PREINIT:
-	ea_catalog_t	tag;
-	ea_object_t	*ea_obj;
-	AV		*tied_av, *av;
-	SV		*sv, *rv;
-	int		i;
-CODE:
-	tag = catalog_value(catalog);
-	if ((tag & EXT_TYPE_MASK) != EXT_GROUP) {
-		croak("Invalid object type");
-	}
-
-	/* Create a new xs_ea_object_t and subsiduary structures. */
-	New(0, RETVAL, 1, xs_ea_object_t);
-	RETVAL->ea_obj = ea_obj = ea_alloc(sizeof (ea_object_t));
-	bzero(ea_obj, sizeof (*ea_obj));
-	ea_obj->eo_type = EO_GROUP;
-	ea_obj->eo_catalog = tag;
-	INIT_GROUP_FLAGS(RETVAL);
-	RETVAL->perl_obj = NULL;
-
-	/* Create a new AV and copy in all the passed Items. */
-	av = newAV();
-	av_extend(av, items - 2);
-	for (i = 2; i < items; i++) {
-		HV	*stash;
-		stash = SvROK(ST(i)) ? SvSTASH(SvRV(ST(i))) : NULL;
-		if (stash != Sun_Solaris_Exacct_Object_Item_stash &&
-		    stash != Sun_Solaris_Exacct_Object_Group_stash) {
-			croak("item is not of type " PKGBASE "::Object");
-		}
-		av_store(av, i - 2, copy_xs_ea_object(ST(i)));
-	}
-
-	/* Bless the copied AV and tie it to a new AV */
-	rv = newRV_noinc((SV *)av);
-	sv_bless(rv, Sun_Solaris_Exacct_Object__Array_stash);
-	tied_av = newAV();
-	sv_magic((SV *)tied_av, rv, 'P', Nullch, 0);
-	SvREFCNT_dec(rv);
-	RETVAL->perl_obj = newRV_noinc((SV *)tied_av);
-OUTPUT:
-	RETVAL
-
- #
- # Return the contents of the group as a hashref, using the string value of each
- # item's catalog id as the key.  There are two forms - as_hash() which stores
- # each hash value as a scalar, and should be used when it is known the group
- # does not contain duplicate catalog tags, and as_hashlist wich stores each
- # hash value as an array of values, and can therefore be used when the group
- # may contain duplicate catalog tags.
- #
-
-SV *
-as_hash(self)
-	xs_ea_object_t	*self;
-ALIAS:
-	as_hashlist = 1
-PREINIT:
-	MAGIC   *mg;
-	HV	*hv;
-	AV	*av;
-	int	len, i;
-CODE:
-	/* Make sure the object is inflated. */
-	if (self->perl_obj == NULL) {
-		if (! inflate_xs_ea_object(self)) {
-			XSRETURN_UNDEF;
-		}
-	}
-
-	/* Find the AV underlying the tie and create the new HV. */
-	mg = mg_find(SvRV(self->perl_obj), 'P');
-	PERL_ASSERT(mg != NULL);
-	av = (AV *)SvRV(mg->mg_obj);
-	PERL_ASSERT(av != NULL);
-	hv = newHV();
-
-	/*
-	 * Traverse the value array, saving the values in the hash,
-	 * keyed by the string value of the catalog id field.
-	 */
-	len = av_len(av) + 1;
-	for (i = 0; i < len; i++) {
-		SV		**svp, *val;
-		xs_ea_object_t	*xs_obj;
-		const char	*key;
-
-		/* Ignore undef values. */
-		if ((svp = av_fetch(av, i, FALSE)) == NULL) {
-			continue;
-		}
-		PERL_ASSERT(*svp != NULL);
-
-		/* Figure out the key. */
-		xs_obj = INT2PTR(xs_ea_object_t *, SvIV(SvRV(*svp)));
-		key = catalog_id_str(xs_obj->ea_obj->eo_catalog);
-
-		/*
-		 * For Items, save the perl representation
-		 * of the underlying ea_object_t.
-		 */
-		if (IS_ITEM(xs_obj)) {
-			switch (xs_obj->ea_obj->eo_catalog & EXT_TYPE_MASK) {
-			case EXT_UINT8:
-				val =
-				    newSVuv(xs_obj->ea_obj->eo_item.ei_uint8);
-				break;
-			case EXT_UINT16:
-				val =
-				    newSVuv(xs_obj->ea_obj->eo_item.ei_uint16);
-				break;
-			case EXT_UINT32:
-				val =
-				    newSVuv(xs_obj->ea_obj->eo_item.ei_uint32);
-				break;
-			case EXT_UINT64:
-				val =
-				    newSVuv(xs_obj->ea_obj->eo_item.ei_uint64);
-				break;
-			case EXT_DOUBLE:
-				val =
-				    newSVnv(xs_obj->ea_obj->eo_item.ei_double);
-				break;
-			case EXT_STRING:
-				val =
-				    newSVpvn(xs_obj->ea_obj->eo_item.ei_string,
-				    xs_obj->ea_obj->eo_item.ei_size - 1);
-				break;
-			case EXT_RAW:
-				val =
-				    newSVpvn(xs_obj->ea_obj->eo_item.ei_raw,
-				    xs_obj->ea_obj->eo_item.ei_size);
-				break;
-			/*
-			 * For embedded objects and Groups, return a ref
-			 * to the perl SV.
-			 */
-			case EXT_EXACCT_OBJECT:
-				if (xs_obj->perl_obj == NULL) {
-					/* Make sure the object is inflated. */
-					if (! inflate_xs_ea_object(xs_obj)) {
-						SvREFCNT_dec(hv);
-						XSRETURN_UNDEF;
-					}
-				}
-				val = SvREFCNT_inc(xs_obj->perl_obj);
-				break;
-			case EXT_GROUP:
-				val = SvREFCNT_inc(xs_obj->perl_obj);
-				break;
-			case EXT_NONE:
-			default:
-				croak("Invalid object type");
-				break;
-			}
-		/*
-		 * Now we deal with Groups.
-		 */
-		} else {
-			/* Make sure the object is inflated. */
-			if (xs_obj->perl_obj == NULL) {
-				if (! inflate_xs_ea_object(xs_obj)) {
-					SvREFCNT_dec(hv);
-					XSRETURN_UNDEF;
-				}
-			}
-			val = SvREFCNT_inc(xs_obj->perl_obj);
-		}
-
-		/*
-		 * If called as as_hash(), store the value directly in the
-		 * hash, if called as as_hashlist(), store the value in an
-		 * array within the hash.
-		 */
-		if (ix == 0) {
-			hv_store(hv, key, strlen(key), val, FALSE);
-		} else {
-			AV *ary;
-
-			/* If the key already exists in the hash. */
-			svp = hv_fetch(hv, key, strlen(key), TRUE);
-			if (SvOK(*svp)) {
-				ary = (AV *)SvRV(*svp);
-
-			/* Otherwise, add a new array to the hash. */
-			} else {
-				SV *rv;
-				ary = newAV();
-				rv = newRV_noinc((SV *)ary);
-				sv_setsv(*svp, rv);
-				SvREFCNT_dec(rv);
-			}
-			av_push(ary, val);
-		}
-	}
-	RETVAL = newRV_noinc((SV *)hv);
-OUTPUT:
-	RETVAL
-
-MODULE = Sun::Solaris::Exacct::Object PACKAGE = Sun::Solaris::Exacct::Object::_Array
-PROTOTYPES: ENABLE
-
- #
- # Copy the passed list of xs_ea_object_t.
- #
-void
-copy_xs_ea_objects(...)
-PREINIT:
-	int	i;
-PPCODE:
-	EXTEND(SP, items);
-	for (i = 0; i < items; i++) {
-		HV	*stash;
-		stash = SvROK(ST(i)) ? SvSTASH(SvRV(ST(i))) : NULL;
-		if (stash != Sun_Solaris_Exacct_Object_Item_stash &&
-		    stash != Sun_Solaris_Exacct_Object_Group_stash) {
-			croak("item is not of type " PKGBASE "::Object");
-		}
-		PUSHs(sv_2mortal(copy_xs_ea_object(ST(i))));
-	}
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/README	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,50 +0,0 @@
-#
-# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
-#
-
-Licensing
----------
-This module is released under the Perl Artistic License.
-
-Availability
-------------
-This module is only available for Solaris 9 onwards.
-
-Description
------------
-This module provided access to the Solaris Extended Accounting (exacct)
-subsystem, which is part of the Solaris resource management infrastructure.
-
-For more information on Solaris Extended Accounting, see the libexacct(3LIB)
-and acctadm(1M) manpages and the following on-line documentation:
-
-System Administration Guide: Resource Management and Network Services
-Chapter 7 - Extended Accounting
-http://docs.sun.com/db/doc/816-7125, or any later version
-
-An example of how this module might be used is to dump the contents of an
-exacct data file:
-
-use Sun::Solaris::Exacct qw(:EXACCT_ALL);
-die("Usage is dumpexacct <exacct file>\n") unless (@ARGV == 1);
-my $ef = ea_new_file($ARGV[0], &O_RDONLY) || die(ea_error_str());
-printf("Creator:  %s\n", $ef->creator());
-printf("Hostname: %s\n\n", $ef->hostname());
-while (my $obj = $ef->get()) {
-        ea_dump_object($obj);
-}
-if (ea_error() != EXR_OK && ea_error() != EXR_EOF)  {
-        printf("\nERROR: %s\n", ea_error_str());
-        exit(1);
-}
-exit(0);
-
-Installation
-------------
-
-1. Uncompress and untar the archive
-2. cd to the module directory
-3. perl Makefile.PL; make install
-
-If you are using gcc and wish to build this module against the perl shipped as
-part of Solaris, see the Solaris-PerlGcc module, also available from CPAN.
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/README.ON	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,22 +0,0 @@
-#
-# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
-#
-
-This module is released as Public Source via the Comprehensive Perl Archive
-Network (http://www.cpan.org).  If it is updated for any reason, a new
-release should be pushed to CPAN.
-
-The version number of this module is derived from the $VERSION variable in
-Exacct.pm.  If anything under this directory is modified, $VERSION should be 
-changed in Exacct.pm to update the module version number correctly.  If this 
-is not done, it will not be possible to upload the generated archive to CPAN, 
-as CPAN requires that uploaded archives have unique names.
-
-To prepare the contents of the directory for release, they should be packaged
-up as a .tar.gz archive.  The procedure for this is:
-
-$ /usr/perl5/bin/perl Makefile.PL
-$ make tardist
-
-This will produce the file for upload to CPAN.  Contact cpan-support@sun.com
-for details of how to do this.
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/exacct_common.xh	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,134 +0,0 @@
-/*
- * Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
- *
- * Common includes and defines for Sun::Solaris::Exacct.
- */
-
-#ifndef	_EXACCT_COMMON_H
-#define	_EXACCT_COMMON_H
-
-/* Exacct related includes. */
-#include <exacct.h>
-
-/*
- * On i386 Solaris defines SP, which conflicts with the perl definition of SP
- * We don't need the Solaris one, so get rid of it to avoid warnings.
- */
-#undef SP
-
-/* Perl XS includes. */
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-/* Root of the Exacct namespace. */
-#define	PKGBASE	"Sun::Solaris::Exacct"
-
-/* Debugging assertion macros. */
-#ifdef EXACCT_DEBUG
-#define	PERL_ASSERT(EXPR) ((void)((EXPR) || \
-	(croak("%s(%d) assertion failed: %s", __FILE__, __LINE__, #EXPR), 0), \
-	0))
-#define	PERL_ASSERTMSG(EXPR, MSG) ((void)((EXPR) || \
-	(croak("%s(%d) %s", __FILE__ __LINE__, MSG), 0), 0))
-#else
-#define	PERL_ASSERT(EXP)		((void)0)
-#define	PERL_ASSERTMSG(EXP, MSG)	((void)0)
-#endif
-
-/*
- * Object stash pointers - caching these speeds up the creation and
- * typechecking of perl objects by removing the need to do a hash lookup.
- * The peculiar variable names are so that typemaps can generate the correct
- * package name using the typemap '$Package' variable as the root of the name.
- */
-extern HV *Sun_Solaris_Exacct_Catalog_stash;
-extern HV *Sun_Solaris_Exacct_File_stash;
-extern HV *Sun_Solaris_Exacct_Object_Item_stash;
-extern HV *Sun_Solaris_Exacct_Object_Group_stash;
-extern HV *Sun_Solaris_Exacct_Object__Array_stash;
-
-/* Populate the stash pointers, provided by Exacct.xs. */
-extern void init_stashes(void);
-
-/*
- * Pointer to part of the hash tree built by define_catalog_constants in
- * Catalog.xs.  This is used by catalog_id_str() in Exacct.xs when mapping
- * from a catalog to an id string.
- */
-extern HV *IdValueHash;
-extern char *catalog_id_str(ea_catalog_t catalog);
-
-/*
- * Structure for holding an ::Exacct::Object.  Different bits of this structure
- * will be populated depending on the type of Object (Item or Group), and on
- * how the Object was created (read from file or by the script).
- *
- * Simple Items
- * Only the ea_obj part is populated, and that points to an ea_object_t
- * that is used to hold the Item.
- *
- * Items containing embedded Objects
- * If an Item of this type has been read from file and has not been accessed,
- * just the ea_obj part will be populated.  If the object has been accessed, or
- * if it has been created from within the script, the perl_obj part will be
- * populated.
- *
- * Groups
- * If a Group has been read from file and has not been accessed, just the
- * ea_obj part will be populated.  If the object has been accessed, or if it has
- * been created from within the script, the perl_obj part will be populated.
- */
-typedef struct {
-	ea_object_t	*ea_obj;	/* Underlying exacct object. */
-	SV		*perl_obj;	/* Underlying perl object. */
-	uchar_t		flags;		/* Object type and status. */
-} xs_ea_object_t;
-
-/* Macros for manipulating flag bits. */
-#define	TYPE_MASK	0x03
-#define	PLAIN_ITEM	0x00
-#define	EMBED_ITEM	0x01
-#define	GROUP		0x02
-
-#define	GET_TYPE_BITS(X)	((X)->flags & TYPE_MASK)
-#define	SET_TYPE_BITS(X, Y)	((X)->flags = (((X)->flags & ~TYPE_MASK) | Y)
-#define	SET_PLAIN_ITEM(X)	(SET_TYPE_BITS(X, PLAIN_ITEM))
-#define	SET_EMBED_ITEM(X)	(SET_TYPE_BITS(X, EMBED_ITEM))
-#define	SET_GROUP(X)		(SET_TYPE_BITS(X, GROUP))
-#define	IS_ITEM(X)		(GET_TYPE_BITS(X) < GROUP)
-#define	IS_PLAIN_ITEM(X)	(GET_TYPE_BITS(X) == PLAIN_ITEM)
-#define	IS_EMBED_ITEM(X)	(GET_TYPE_BITS(X) == EMBED_ITEM)
-#define	IS_GROUP(X)		(GET_TYPE_BITS(X) == GROUP)
-
-#define	INIT_PLAIN_ITEM_FLAGS(X)	((X)->flags = PLAIN_ITEM)
-#define	INIT_EMBED_ITEM_FLAGS(X)	((X)->flags = EMBED_ITEM)
-#define	INIT_GROUP_FLAGS(X)		((X)->flags = GROUP)
-
-/* Fast way to make catalog objects, provided by Exacct.xs. */
-extern SV *new_catalog(ea_catalog_t cat);
-
-/* Return the integer catalog value from the passed object or SV. */
-extern ea_catalog_t catalog_value(SV *catalog);
-
-/* Fast way to make exacct objects, provided by Exacct.xs. */
-extern SV *new_xs_ea_object(ea_object_t *obj);
-
-/* Deflate an xs_ea_object, provided by Exacct.xs. */
-extern ea_object_t *deflate_xs_ea_object(SV *sv);
-
-/*
- * Structure and associated function for creating perl constants
- * and populating @_Constants, used for constant lookup by the modules.
- * See Exacct.xs for the definition of define_constants().
- */
-typedef enum { other = 0, type, catlg, id } consttype_t;
-typedef struct {
-	const char		*name;
-	const int		len;
-	const consttype_t	consttype;
-	const unsigned int	value;
-} constval_t;
-extern void define_constants(const char *pkg, constval_t *dvp);
-
-#endif	/* _EXACCT_COMMON_H */
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/extract_defines	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,159 +0,0 @@
-#
-# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# This script scans the exacct header files and extracts the names of any
-# #defines that are to be exported by the Exacct modules.  All such #defines
-# are written out as an array of structs to a file which is subsequently
-# included into the module.  Parameters to this script are the name of the
-# module to generate for, and the output file to use.
-#
-
-use warnings;
-use strict;
-
-# Forward declarations
-sub default_typefn;
-sub catalog_typefn;
-
-#
-# Map of module names to files and lists + patterns of macros to declare.
-# Each entry in the hash is keyed by the module name, and the value of each
-# entry is a list of actions, where each action is a (keyword, param) pair.
-# The valid actions are:
-#     typefn => <fn_ptr>
-#         fn_ptr is a function which when given a constant name,
-#         returns the type - see default_typefn and catalog_typefn.
-#     declare => [ <constant>, ... ]
-#         Add the passed list of constants.
-#     scan => [ <file> <regular expression> ]
-#         Scan the specified file in /usr/include
-#         for #defines that match the passed RE.
-#
-our %ModMap = (
-	Exacct => [
-		typefn	=> \&default_typefn,
-		declare	=> [ qw(P_PID P_TASKID P_PROJID) ],
-		scan 	=> [ 'sys/exacct.h' =>
-			     qr/(?:EW|EP|EXR)_\w+/ ],
-	],
-	Catalog => [
-		typefn	=> \&catalog_typefn,
-		scan 	=> [ 'sys/exacct_catalog.h' =>
-			     qr/EX[TCD]_\w+/ ],
-	],
-	File => [
-		typefn	=> \&default_typefn,
-		# From exacct.h.
-		declare	=> [ qw(EO_HEAD EO_TAIL EO_NO_VALID_HDR
-			     EO_POSN_MSK EO_VALIDATE_MSK) ],
-	],
-	Object => [
-		typefn	=> \&default_typefn,
-		# From sys/exacct.h.
-		declare	=> [ qw(EO_ERROR EO_NONE EO_ITEM EO_GROUP) ],
-	],
-);
-
-#
-# Constants may have a 'type' associated, currently only used by ::Catalog
-# (see below).  For all other cases the type is 'other'.
-#
-sub default_typefn
-{
-	return('other');
-}
-
-#
-# ::Catalog uses the 'type' field to determine whether a given constant is a
-# type, a catalog or a data id.  This function works out what type of constant
-# has been passed and returns the appropriate type.
-#
-sub catalog_typefn
-{
-	my ($define) = @_;
-	if ($define =~ /_MASK$/) {
-		return('other');
-	} elsif ($define =~ /^EXT_/) {
-		return('type');
-	} elsif ($define =~ /^EXC_/) {
-		return('catlg');
-	} elsif ($define =~ /^EXD_/) {
-		return('id');
-	} else {
-		return('other');
-	}
-}
-
-#
-# Process a C header file, looking for #defines of interest.  Candidates are
-# saved in the $defines arrayref.  Note nested includes are not processed.
-#
-sub process_file
-{
-	my ($file, $filelist, $pattern, $typefn, $defines) = @_;
-	my $fh;
-	if ($_ = (grep(m{/$file$}, @$filelist))[0]) {
-		open($fh, '<', $_) || die("Can't open $_: $!\n");
-	} else {
-		die("Can't find $file\n");
-	}
-	my $line;
-	while (defined($line = <$fh>)) {
-		if ($line =~ /#define\s+\b($pattern)\b/) {
-			$defines->{$1} = &$typefn($1);
-		}
-	}
-	close($fh);
-}
-
-#
-# Main routine.
-#
-
-# Check arguments and open the output file.
-die("Usage is extract_defines <module> <output file> <input files...>\n")
-    unless (@ARGV >= 2);
-my ($module, $outfile, @filelist) = @ARGV;
-my $mm;
-if (! defined($mm = $ModMap{$module})) {
-	die("Don't know how to handle module $module\n")
-}
-my $out;
-if (! open($out, ">$outfile")) {
-	die("Can't open $outfile: $!\n");
-}
-
-# Perform the appropriate set of actions from ModMap for the specified module.
-my $defines = {};
-my $tfn = \&default_typefn;
-my $i = 0;
-while ($i < @$mm) {
-	my $act = $$mm[$i++];
-	my $parm = $$mm[$i++];
-	if ($act eq 'typefn') {
-		$tfn = $parm;
-	} elsif ($act eq 'declare') {
-		foreach my $d (@$parm) {
-			$defines->{$d} = &$tfn($d);
-		}
-	} elsif ($act eq 'scan') {
-		process_file($parm->[0], \@filelist, $parm->[1], $tfn,
-		    $defines);
-	} else {
-		die("Illegal action $act\n");
-	}
-}
-
-# Print the structure definition.
-print $out ("static constval_t constants[] = {\n");
-foreach my $def (sort(keys(%$defines))) {
-	my $type = $defines->{$def};
-	my $len = length($def);
-	my $t = "\t" . "\t" x (3 - int(($len + 3) / 8));
-	print $out ("\t\"$def\",$t$len,\t$type,\n\t    (unsigned int) $def,\n");
-}
-print $out ("\tNULL,\t\t\t\t0,\tother,\n\t    0,\n};\n");
-close($out);
-exit(0);
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/pod/Catalog.pod	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,144 +0,0 @@
-#
-# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Sun::Solaris::Exacct::Catalog documentation.
-# 
-
-=head1 NAME
-
-Sun::Solaris::Exacct::Catalog - exacct catalog tag manipulation
-
-=head1 SYNOPSIS
-
- use Sun::Solaris::Exacct::Catalog qw(:ALL);
- my $ea_cat = Sun::Solaris::Exacct::Catalog->new(
-     &EXT_UINT64 | &EXC_DEFAULT | &EXD_PROC_PID);
-
-This class provides a wrapper around the 32-bit integer used as a catalog tag.
-The catalog tag is represented as a Perl object blessed into the
-C<Sun::Solaris::Exacct::Catalog> class so that methods can be used to manipulate
-fields in a catalog tag.
-
-=head2 Constants
-
-All the C<EXT_*>, C<EXC_*>, and C<EXD_*> macros are provided as constants.
-Constants passed to the methods below can either be the integer value such as
-C<EXT_UINT8> or the string representation such as C<"EXT_UINT8">.
-
-=head2 Functions
-
-None.
-
-=head2 Class methods
-
-B<C<register($cat_pfx, $catalog_id, $export, @idlist)>>
-
-This method is used to register application-defined C<libexacct(3LIB)>
-catalogs with the exacct Perl library. See
-F</usr/include/sys/exacct_catalog.h> for details of the catalog tag format.
-This method allows symbolic names and strings to be used for manipulating
-application-defined catalogs. The first two parameters define the catalog
-prefix and associated numeric catalog ID. If the C<$export> parameter is true,
-the constants are exported into the caller's package. The final parameter is a
-list of C<(id, name)> pairs that identify the required constants. The
-constants created by this method are formed by appending C<$cat_pfx> and
-C<"_"> to each name in the list, replacing any spaces with underscore
-characters and converting the resulting string to uppercase characters. The
-C<$catalog_name> value is also created as a constant by prefixing it with
-C<EXC_> and converting it to uppercase characters. Its value becomes that of
-C<$catalog_id> shifted left by 24 bits. For example, the following call:
-
- Sun::Solaris::Exacct::Catalog->ea_register("MYCAT", 0x01, 1,
-     FIRST => 0x00000001, SECOND => 0x00000010);
-
-results in the definition of the following constants:
-
- EXC_MYCAT    0x01 << 24
- MYCAT_FIRST  0x00000001
- MYCAT_SECOND 0x00000010
-
-Only the catalog ID value of 0x01 is available for application use
-C<(EXC_LOCAL)>. All other values are reserved. While it is possible to use
-values other than 0x01, they might conflict with future extensions to the
-libexacct file format.
-
-If any errors are detected during this method, a string is returned containing
-the appropriate error message. If the call is sucessful, C<undef> is returned.
-
-B<C<new($integer)>>
-
-B<C<new($cat_obj)>>
-
-B<C<new($type, $catalog, $id)>>
-
-This method creates and returns a new Catalog object, which is a wrapper
-around a 32-bit integer catalog tag. Three possible argument lists can be
-given. The first variant is to pass an integer formed by bitwise-inclusive OR
-of the appropriate C<EX[TCD]_*> constants. The second variant is to pass an
-existing Catalog object that will be copied. The final variant is to pass in
-the type, catalog and ID fields as separate values. Each of these values can
-be either an appropriate integer constant or the string representation of the
-constant.
-
-=head2 Object methods
-
-B<C<value()>>
-
-This method allows the value of the catalog tag to be queried. In a scalar
-context it returns the 32-bit integer representing the tag. In a list context
-it returns a C<(type, catalog, id)> triplet, where each member of the triplet
-is a dual-typed scalar.
-
-B<C<type()>>
-
-This method returns the type field of the catalog tag as a dual-typed scalar.
-
-B<C<catalog()>>
-
-This method returns the catalog field of the catalog tag as a dual-typed
-scalar.
-
-B<C<id()>>
-
-This method returns the id field of the catalog tag as a dual-typed scalar.
-
-B<C<type_str()>>
-
-B<C<catalog_str()>>
-
-B<C<id_str()>>
-
-These methods return string representations of the appropriate value. These
-methods can be used for textual output of the various catalog fields. The
-string representations of the constants are formed by removing the C<EXT_>,
-C<EXC_>, or C<EXD_> prefix, replacing any underscore characters with spaces,
-and converting the remaining string to lowercase characters.
-
-=head2 Exports
-
-By default nothing is exported from this module. The following tags can be
-used to selectively import constants and functions defined in this module:
-
- :CONSTANTS   EXT_*, EXC_*, and EXD_*
-
- :ALL         :CONSTANTS
-
-=head2 ATTRIBUTES
-
-See C<attributes(5)> for descriptions of the following attributes:
-
-  ___________________________________________________________
- |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
- |_____________________________|_____________________________|
- | Availability                | CPAN (http://www.cpan.org)  |
- |_____________________________|_____________________________|
- | Interface Stability         | Evolving                    |
- |_____________________________|_____________________________|
-
-=head1 SEE ALSO
-
-C<Sun::Solaris::Exacct(3)>, C<Sun::Solaris::Exacct::File(3)>,
-C<Sun::Solaris::Exacct::Object(3)>, C<Sun::Solaris::Exacct::Object::Group(3)>,
-C<Sun::Solaris::Exacct::Object::Item(3)>, C<libexacct(3LIB)>, C<attributes(5)>
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/pod/Exacct.pod	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,193 +0,0 @@
-#
-# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Sun::Solaris::Exacct documentation.
-# 
-
-=head1 NAME
-
-Sun::Solaris::Exacct - exacct system calls and error handling
-
-=head1 SYNOPSIS
-
- use Sun::Solaris::Exacct qw(:EXACCT_ALL);
- my $ea_rec = getacct(P_PID, $$);
-
-This module provides access to the C<ea_error(3EXACCT)> function and for all the
-extended accounting system calls. Constants from the various C<libexacct(3LIB)>
-header files are also provided.
-
-=head2 Constants
-
-The C<P_PID>, C<P_TASKID>, C<P_PROJID> and all the C<EW_*>, C<EP_*>, C<EXR_*>
-macros are provided as Perl constants.
-
-=head2 Functions
-
-B<C<getacct($idtype, $id)>>
-
-The C<$idtype> parameter must be either C<P_TASKID> or C<P_PID> and C<$id>
-must be a corresponding task or process ID. This function returns an object of
-type C<Sun::Solaris::Exacct::Object>, representing the unpacked accounting
-buffer returned by the underlying C<getacct(2)> system call. In the event of
-error, C<undef> is returned.
-
-B<C<putacct($idtype, $id, $record)>>
-
-The C<$idtype> parameter must be either C<P_TASKID> or C<P_PID> and C<$id>
-must be a corresponding task or process ID. If C<$record> is of type
-C<Sun::Solaris::Exacct::Object>, it is converted to the corresponding packed
-libexacct object and passed to the C<putacct(2)> system call. If C<$record> is
-not of type C<Sun::Solaris::Exacct::Object> it is converted to a string using
-the normal Perl conversion rules and stored as a raw buffer. For predictable
-and endian-independent results, any raw buffers should be constructed using
-the Perl C<pack()> function. This function returns C<true> on success and
-C<false> on failure.
-
-B<C<wracct($idtype, $id, $flags)>>
-
-The C<$idtype> parameter must be either C<P_TASKID> or C<P_PID> and $id must
-be a corresponding task or process ID. The C<$flags> parameter must be either
-C<EW_INTERVAL> or C<EW_PARTIAL>. The parameters are passed directly to the
-underlying C<wracct(2)> system call. This function returns C<true> on success
-and C<false> on failure.
-
-B<C<ea_error()>>
-
-This function provides access to the C<ea_error(3EXACCT)> function. It returns
-a double-typed scalar that in a numeric context will be one of the C<EXR_*>
-constants. In a string context it will be a descriptive error message. This is
-the exacct equivalent to the C<$!> (C<errno>) Perl variable.
-
-B<C<ea_error_str()>>
-
-This function returns a double-typed scalar that in a numeric context will be
-one of the C<EXR_*> constants as returned by C<ea_error>. In a string context
-it describes the value returned by C<ea_error>. If C<ea_error> returns
-C<EXR_SYSCALL_FAIL>, the string value returned is the value returned by
-C<strerror(3C)>. This function is provided as a convenience so that repeated
-blocks of code like the following can be avoided:
-
- if (ea_error() == EXR_SYSCALL_FAIL) {
-         print("error: $!\n");
- } else {
-         print("error: ", ea_error(), "\n");
- }
-
-B<C<ea_register_catalog($cat_pfx, $catalog_id, $export, @idlist)>>
-
-This convenience function is a wrapper around the
-C<< Sun::Solaris::Exacct::Catalog->register() >> method.
-
-B<C<ea_new_catalog($integer)>>
-
-B<C<ea_new_catalog($cat_obj)>>
-
-B<C<ea_new_catalog($type, $catalog, $id)>>
-
-These convenience functions are wrappers around the
-C<< Sun::Solaris::Exacct::Catalog->new() >> method. See
-C<Sun::Solaris::Exacct::Catalog(3)>.
-
-B<C<< ea_new_file($name, $oflags, creator => $creator,
-    aflags => $aflags, mode => $mode) >>>
-
-This convenience function is a wrapper around the
-C<< Sun::Solaris::Exacct::File->new() >> method. See
-C<Sun::Solaris::Exacct::File(3)>.
-
-B<C<ea_new_item($catalog, $value)>>
-
-This convenience function is a wrapper around the
-C<< Sun::Solaris::Exacct::Object::Item->new() >> method. See
-C<Sun::Solaris::Exacct::Object::Item(3)>.
-
-B<C<ea_new_group($catalog, @objects)>>
-
-This convenience function is a wrapper around the
-C<< Sun::Solaris::Exacct::Object::Group->new() >> method. See
-C<Exacct::Object::Group(3)>.
-
-B<C<ea_dump_object($object, $filehandle)>>
-
-This convenience function is a wrapper around the
-C<< Sun::Solaris::Exacct::Object->dump() >> method.  See
-C<Sun::Solaris::Exacct::Object(3)>.
-
-=head2 Class methods
-
-None.
-
-=head2 Object methods
-
-None.
-
-=head2 Exports
-
-By default nothing is exported from this module. The following tags can be
-used to selectively import constants and functions defined in this module:
-
- :SYSCALLS           getacct(), putacct(), and wracct()
-
- :LIBCALLS           ea_error() and ea_error_str()
-
- :CONSTANTS          P_PID, P_TASKID, P_PROJID, EW_*, EP_*, and EXR_*
-
- :SHORTHAND          ea_register_catalog(), ea_new_catalog(), ea_new_file(),
-                     ea_new_item(), and ea_new_group()
-
- :ALL                :SYSCALLS, :LIBCALLS, :CONSTANTS, and :SHORTHAND
-
- :EXACCT_CONSTANTS   :CONSTANTS, plus the :CONSTANTS tags for
-                     Sun::Solaris::Catalog, Sun::Solaris::File,
-                     and Sun::Solaris::Object
-
- :EXACCT_ALL         :ALL, plus the :ALL tags for Sun::Solaris::Catalog,
-                     Sun::Solaris::File, and Sun::Solaris::Object
-
-=head1 ATTRIBUTES
-
-See C<attributes(5)> for descriptions of the following attributes:
-
-  ___________________________________________________________
- |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
- |_____________________________|_____________________________|
- | Availability                | CPAN (http://www.cpan.org)  |
- |_____________________________|_____________________________|
- | Interface Stability         | Evolving                    |
- |_____________________________|_____________________________|
-
-
-=head1 SEE ALSO
-
-C<getacct(2)>, C<putacct(2)>, C<wracct(2)>, C<ea_error(3EXACCT)>,
-C<Sun::Solaris::Exacct::Catalog(3)>, C<Sun::Solaris::Exacct::File(3)>,
-C<Sun::Solaris::Exacct::Object(3)>, C<Sun::Solaris::Exacct::Object::Group(3)>,
-C<Sun::Solaris::Exacct::Object::Item(3)>, C<libexacct(3LIB)>, C<attributes(5)>
-
-=head1 NOTES
-
-The modules described in the C<Sun::Solaris::Exacct> manual pages make
-extensive use of the Perl "double-typed scalar" facility. This facility allows
-a scalar value to behave either as an integer or as a string, depending upon
-context. It is the same behavior as exhibited by the C<$!> Perl variable
-(C<errno>). It is useful because it avoids the need to map from an integer
-value to the corresponding string to display a value. Some examples are
-provided below:
-
- # Assume $obj is a Sun::Solaris::Exacct::Item
- my $type = $obj->type();
-
- # Print "2 EO_ITEM"
- printf("%d %s\n", $type, $type);
-
- # Behave as an integer, $i == 2
- my $i = 0 + $type;
-
- # Behave as a string, $s = "abc EO_ITEM xyx"
- my $s = "abc $type xyz";
-
-Wherever a function or method is documented as returning a double-typed
-scalar, the returned value exhibits this type of behavior.
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/pod/File.pod	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,178 +0,0 @@
-#
-# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Sun::Solaris::Exacct::File documentation.
-# 
-
-=head1 NAME
-
-Sun::Solaris::Exacct::File - exacct file manipulation
-
-=head1 SYNOPSIS
-
- use Sun::Solaris::Exacct::File qw(:ALL);
- my $ea_file = Sun::Solaris::Exacct::File->new($myfile, &O_RDONLY);
- my $ea_obj = $ea_file->get();
-
-This module provides access to the C<libexacct(3LIB)> functions that
-manipulate accounting files. The interface is object-oriented and allows the
-creation and reading of libexacct files. The C library calls wrapped by this
-module are C<ea_open(3EAXACCT)>, C<ea_close(3EAXACCT)>,
-C<ea_next_object(3EAXACCT)>, C<ea_previous_object(3EAXACCT)>,
-C<ea_write_object(3EAXACCT)>, C<ea_get_object(3EAXACCT)>,
-C<ea_get_creator(3EAXACCT)>, and C<ea_get_hostname(3EAXACCT)>. The file read
-and write methods all operate on C<Sun::Solaris::Exacct::Object> objects and
-perform all the necessary memory management, packing, unpacking, and structure
-conversions that are required.
-
-=head2 Constants
-
-C<EO_HEAD>, C<EO_TAIL>, C<EO_NO_VALID_HDR>, C<EO_POSN_MSK>, and
-C<EO_VALIDATE_MSK>. Other constants needed by the C<new()> method below are in
-the standard Perl C<Fcntl> module.
-
-=head2 Functions
-
-None.
-
-=head2 Class methods
-
-B<C<< new($name, $oflags, creator => $creator,
-    aflags => $aflags, mode => $mode) >>>
-
-This method opens a libexacct file as specified by the mandatory parameters
-C<$name> and C<$oflags>, and returns a C<Sun::Solaris::Exacct::File> object,
-or C<undef> if an error occurs. The parameters C<$creator>, C<$aflags>, and
-C<$mode> are optional and are passed as C<(name => value)> pairs. The only
-valid values for C<$oflags> are the combinations of C<O_RDONLY>, C<O_WRONLY>,
-C<O_RDWR>, and C<O_CREAT> described below.
-
-The C<$creator> parameter is a string describing the creator of the file. If
-it is required (for instance, when writing to a file) but absent, it is set to
-the string representation of the caller's UID. The C<$aflags> parameter
-describes the required positioning in the file for C<O_RDONLY> access: either
-C<EO_HEAD> or C<EO_TAIL> are allowed. If absent, C<EO_HEAD> is assumed. The
-C<$mode> parameter is the file creation mode and is ignored unless C<O_CREAT>
-is specified in C<$oflags>. If C<$mode> is unspecified, the file creation mode
-is set to C<0666> (octal). If an error occurs, it can be retrieved with the
-C<Sun::Solaris::Exacct::ea_error()> function.
-(See C<Sun::Solaris::Exacct(3)>).
-
-B<C< $oflags             $aflags               Action>>
-
- O_RDONLY            Absent or EO_HEAD     Open for reading
-                                           at the start  of
-                                           the file.
-
- O_RDONLY            EO_TAIL               Open for reading
-                                           at the end of the
-                                           file.
-
- O_WRONLY            Ignored               File must exist,
-                                           open for writing
-                                           at the end of the
-                                           file.
-
- O_WRONLY | O_CREAT  Ignored               Create file if it
-                                           does not exist,
-                                           otherwise truncate
-                                           and open for writing.
-
- O_RDWR              Ignored               File must  exist,
-                                           open for
-                                           reading/writing,
-                                           positioned at the
-                                           end of the file.
-
- O_RDWR | O_CREAT    Ignored               Create file if it
-                                           does not exist,
-                                           otherwise truncate
-                                           and open for
-                                           reading/writing.
-
-=head2 Object methods
-
-B<Note:> Closing a C<Sun::Solaris::Exacct::File>
-
-There is no explicit C<close()> method for a C<Sun::Solaris::Exacct::File>.
-The file is closed when the file handle object is undefined or reassigned.
-
-B<C<creator()>>
-
-This method returns a string containing the creator of the file or C<undef> if
-the file does not contain the information.
-
-B<C<hostname()>>
-
-This method returns a string containing the hostname on which the file was
-created, or C<undef> if the file does not contain the information.
-
-B<C<next()>>
-
-This method reads the header information of the next record in the file. In a
-scalar context the value of the type field is returned as a dual-typed scalar
-that will be one of C<EO_ITEM>, C<EO_GROUP>, or C<EO_NONE>. In a list context
-it returns a two-element list containing the values of the type and catalog
-fields. The type element is a dual-typed scalar. The catalog element is
-blessed into the C<Sun::Solaris::Exacct::Catalog> class. If an error occurs,
-C<undef> or C<(undef, undef)> is returned depending upon context. The status
-can be accessed with the C<Sun::Solaris::Exacct::ea_error()> function. (See
-C<Sun::Solaris::Exacct(3)>).
-
-B<C<previous()>>
-
-This method reads the header information of the previous record in the file.
-In a scalar context it returns the type field. In a list context it returns
-the two element list containing the values of the type and catalog fields, in
-the same manner as the C<next()> method. Error are also returned in the same
-manner as the C<next()> method.
-
-B<C<get()>>
-
-This method reads in the libexacct record at the current position in the file
-and returns a C<Sun::Solaris::Exacct::Object> containing the unpacked data
-from the file. This object can then be further manipulated using its methods.
-In case of error C<undef> is returned and the error status is made available
-with the C<Sun::Solaris::Exacct::ea_error()> function. After this operation,
-the position in the file is set to the start of the next record in the file.
-
-B<C<write(@ea_obj)>>
-
-This method converts the passed list of C<Sun::Solaris::Exacct::Object>s into
-libexacct file format and appends them to the libexacct file, which must be
-open for writing. This method returns C<true> if successful and C<false>
-otherwise. On failure the error can be examined with the
-C<Sun::Solaris::Exacct::ea_error()> function.
-
-=head2 Exports
-
-By default nothing is exported from this module. The following tags can be
-used to selectively import constants defined in this module:
-
- :CONSTANTS   EO_HEAD, EO_TAIL,  EO_NO_VALID_HDR,  EO_POSN_MSK,  and
-              EO_VALIDATE_MSK
-
- :ALL         :CONSTANTS, Fcntl(:DEFAULT).
-
-=head1 ATTRIBUTES
-
-See C<attributes(5)> for descriptions of the following attributes:
-
-  ___________________________________________________________
- |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
- |_____________________________|_____________________________|
- | Availability                | SUNWpl5u                    |
- |_____________________________|_____________________________|
- | Interface Stability         | CPAN (http://www.cpan.org)  |
- |_____________________________|_____________________________|
-
-=head1 SEE ALSO
-
-C<ea_close(3EXACCT)>, C<ea_get_creator(3EXACCT)>, C<ea_get_hostname(3EXACCT)>,
-C<ea_get_object(3EXACCT)>, C<ea_next_object(3EXACCT)>, C<ea_open(3EXACCT)>,
-C<ea_previous_object(3EXACCT)>, C<ea_write_object(3EXACCT)>,
-C<Sun::Solaris::Exacct(3)>, C<Sun::Solaris::Exacct::Catalog(3)>,
-C<Sun::Solaris::Exacct::Object(3)>, C<Sun::Solaris::Exacct::Object::Group(3)>,
-C<Sun::Solaris::Exacct::Object::Item(3)>, C<libexacct(3LIB)>, C<attributes(5)>
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/pod/Group.pod	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,98 +0,0 @@
-#
-# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Sun::Solaris::Exacct::Object::Group documentation.
-#
-
-=head1 NAME
-
-Sun::Solaris::Exacct::Object::Group - exacct group manipulation
-
-=head1 SYNOPSIS
-
- use Sun::Solaris::Exacct::Object;
- my $ea_grp = Sun::Solaris::Exacct::Object::Group->new(
-     &EXT_GROUP | &EXC_DEFAULT | &EXD_GROUP_PROC);
-
-This module is used for manipulating C<libexacct(3LIB)> Group objects. A
-libexacct Group object is represented as an opaque reference blessed into the
-C<Sun::Solaris::Exacct::Object::Group> class, which is a subclass of the
-C<Sun::Solaris::Exacct::Object> class. The Items within a Group are stored
-inside a Perl array. A reference to the array can be accessed with the
-inherited value() method. The individual Items within a Group can be
-manipulated with the normal Perl array syntax and operators. All data elements
-of the array must be derived from the C<Sun::Solaris::Exacct::Object> class.
-Group objects can also be nested inside each other simply by adding an
-existing Group as a data Item.
-
-=head2 Constants
-
-None.
-
-=head2 Functions
-
-None.
-
-=head2 Class methods
-
-Class methods include those inherited from the C<Sun::Solaris::Exacct::Object>
-base class, plus the following:
-
-B<C<new($catalog, @objects)>>
-
-This method creates and returns a new C<Sun::Solaris::Exacct::Object::Group>.
-The catalog tag can be either an integer or a
-C<Sun::Solaris::Exacct::Catalog>. The catalog tag should be a valid catalog
-tag for a Perl exacct Group object. The C<@objects> parameter is a list of
-C<Sun::Solaris::Exacct::Object> to be stored inside the Group. A copy of all
-the passed Items is taken and any Group objects are recursively copied. The
-contents of the returned Group object can be accessed with the array returned
-by the C<value()> method.
-
-=head2 Object methods
-
-B<C<as_hash()>>
-
-This method returns the contents of the group as a hash reference. It uses the
-string value of each item's catalog ID as the hash entry key and the scalar
-value returned by C<value()> as the hash entry value.
-
-This form should be used if there are no duplicate catalog tags in the group.
-
-This method and its companion C<as_hashlist()> are the fastest ways to access
-the contents of a Group.
-
-B<C<as_hashlist()>>
-
-This method returns the contents of the group as a hash reference. It uses the
-string value of each item's catalog id as the hash entry key and an array of
-the scalar values returned by C<value()> as the hash entry value for all the
-items that share a common key. This form should be used if there might be
-duplicate catalog tags in the group.
-
-This method and its companion C<as_hash()> are the fastest ways to access the
-contents of a Group.
-
-=head2 Exports
-
-None.
-
-=head1 ATTRIBUTES
-
-See C<attributes(5)> for descriptions of the following attributes:
-
-  ___________________________________________________________
- |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
- |_____________________________|_____________________________|
- | Availability                | CPAN (http://www.cpan.org)  |
- |_____________________________|_____________________________|
- | Interface Stability         | Evolving                    |
- |_____________________________|_____________________________|
-
-=head1 SEE ALSO
-
-C<Sun::Solaris::Exacct(3)>, C<Sun::Solaris::Exacct::Catalog(3)>,
-C<Sun::Solaris::Exacct::File(3)>, C<Sun::Solaris::Exacct::Object(3)>,
-C<Sun::Solaris::Exacct::Object::Item(3)>, C<libexacct(3LIB)>, C<attributes(5)>
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/pod/Item.pod	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,94 +0,0 @@
-#
-# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Sun::Solaris::Exacct::Object::Item documentation.
-#
-
-=head1 NAME
-
-Sun::Solaris::Exacct::Object::Item - exacct item manipulation
-
-=head1 SYNOPSIS
-
- use Sun::Solaris::Exacct::Object;
- my $ea_item = Sun::Solaris::Exacct::Object::Item->new(
-     &EXT_UINT64 | &EXC_DEFAULT | &EXD_PROC_PID, $$);
-
-This module is used for manipulating C<libexacct(3LIB)> data Items. A
-libexacct Item is represented as an opaque reference blessed into the
-C<Sun::Solaris::Exacct::Object::Item> class, which is a subclass of the
-C<Sun::Solaris::Exacct::Object> class. The underlying libexacct data types are
-mapped onto Perl types as follows:
-
-B<C< libexacct type                Perl internal type>>
-
- EXT_UINT8                     IV (integer)
-
- EXT_UINT16                    IV (integer)
-
- EXT_UINT32                    IV (integer)
-
- EXT_UINT64                    IV (integer)
-
- EXT_DOUBLE                    NV (double)
-
- EXT_STRING                    PV (string)
-
- EXT_RAW                       PV (string)
-
- EXT_EXACCT_OBJECT             Sun::Solaris::Exacct::Object subclass
-
-=head2 Constants
-
-None.
-
-=head2 Functions
-
-None.
-
-=head2 Class methods
-
-Class methods include those inherited from the C<Sun::Solaris::Exacct::Object>
-base class, plus the following:
-
-B<C<new($catalog, $value)>>
-
-This method creates and returns a new C<Sun::Solaris::Exacct::Object::Item>.
-The catalog tag can be either an integer or a
-C<Sun::Solaris::Exacct::Catalog>. This catalog tag controls the conversion of
-the Perl value to the corresponding Perl exacct data type as described in the
-table above. If the catalog tag has a type field of C<EXT_EXACCT_OBJECT>, the
-value must be a reference to either an Item or a Group object and the passed
-object is recursively copied and stored inside the new Item. Because the
-returned Item is constant, it is impossible, for example, to create an Item
-representing CPU seconds and subsequently modify its value or change its
-catalog value. This behavior is intended to prevent mismatches between the
-catalog tag and the data value.
-
-=head2 Object methods
-
-Object methods are those inherited from the C<Sun::Solaris::Exacct::Object>.
-
-=head2 Exports
-
-None.
-
-=head1 ATTRIBUTES
-
-See C<attributes(5)> for descriptions of the following attributes:
-
-  ___________________________________________________________
- |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
- |_____________________________|_____________________________|
- | Availability                | CPAN (http://www.cpan.org)  |
- |_____________________________|_____________________________|
- | Interface Stability         | Evolving                    |
- |_____________________________|_____________________________|
-
-=head1 SEE ALSO
-
-C<Sun::Solaris::Exacct(3)>, C<Sun::Solaris::Exacct::Catalog(3)>,
-C<Sun::Solaris::Exacct::File(3)>, C<Sun::Solaris::Exacct::Object(3)>,
-C<Sun::Solaris::Exacct::Object::Group(3)>, C<libexacct(3LIB)>, C<attributes(5)>
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/pod/Object.pod	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,150 +0,0 @@
-#
-# Copyright (c) 2002, 2003, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Sun::Solaris::Exacct::Object documentation.
-#
-
-=head1 NAME
-
-Sun::Solaris::Exacct::Object - exacct object manipulation
-
-=head1 SYNOPSIS
-
- use Sun::Solaris::Exacct::Object qw(:ALL);
- print($ea_obj->value(), "\n");
-
-This module is used as a parent of the two possible types of Perl exacct
-objects: Items and Groups. An Item is either a single data value such as the
-number of seconds of user CPU time consumed by a process, an embedded Perl
-exacct object, or a block of raw data. A Group is an ordered collection of
-Perl exacct Items such as all of the resource usage values for a particular
-process or task. If Groups need to be nested within each other, the inner
-Groups can be stored as embedded Perl exacct objects inside the enclosing
-Group.
-
-This module contains methods that are common to both Perl exacct Items and
-Groups. The attributes of C<Sun::Solaris::Exacct::Object> and all classes
-derived from it are read-only after initial creation with new(). This behavior
-prevents the inadvertent modification of the attributes that could produce
-inconsistent catalog tags and data values. The only exception is the array
-used to store the Items inside a Group object, which can be modified using the
-normal Perl array operators. See the C<value()> method below.
-
-=head2 Constants
-
-C<EO_ERROR>, C<EO_NONE>, C<EO_ITEM>, and C<EO_GROUP>.
-
-=head2 Functions
-
-None.
-
-=head2 Class methods
-
-B<C<dump($object, $filehandle)>>
-
-This method dumps formatted text representation of a Perl exacct object to the
-supplied file handle. If no file handle is specified, the text representation
-is dumped to C<STDOUT>. See EXAMPLES below for sample output.
-
-=head2 Object methods
-
-B<C<type()>>
-
-This method returns the type field of the Perl exacct object. The value of the
-type field is returned as a dual-typed scalar and is either C<EO_ITEM>,
-C<EO_GROUP>, or C<EO_NONE>.
-
-B<C<catalog()>>
-
-This method returns the catalog field of the Perl exacct object. The value is
-returned as a C<Sun::Solaris::Exacct::Catalog> object.
-
-B<C<match_catalog($catalog)>>
-
-This method matches the passed catalog tag against the object. C<true> is
-returned of a match occurs. Otherwise C<false> is returned. This method has
-the same behavior as the underlying C<ea_match_object_catalog(3EXACCT)>
-function.
-
-B<C<value()>>
-
-This method returns the value of the Perl exacct object. In the case of an
-Item, this object will normally be a Perl scalar, either a number or string.
-For raw Items, the buffer contained inside the object is returned as a Perl
-string that can be manipulated with the Perl C<unpack()> function. If the Item
-contains either a nested Item or a nested Group, the enclosed Item is returned
-as a reference to an object of the appropriate subtype of the
-C<Sun::Solaris::Exacct::Object> class.
-
-For Group objects, if C<value()> is called in a scalar context, the return
-value is a reference to the underlying array used to store the component Items
-of the Group. Since this array can be manipulated with the normal Perl array
-indexing syntax and array operators, the objects inside the Group can be
-manipulated. All objects in the array must be derived from the
-C<Sun::Solaris::Exacct::Object> class. Any attempt to insert something else
-into the array will generate a fatal runtime error that can be caught with an
-C<eval { }> block.
-
-If C<value()> is called in a list context for a Group object, it returns a
-list of all the objects in the Group. Unlike the array reference returned in a
-scalar context, this list cannot be manipulated to add or delete Items from a
-Group. This mechanism is considerably faster than the array mechanism
-described above and is the preferred mechanism if a Group is being examined in
-a read-only manner.
-
-=head2 Exports
-
-By default nothing is exported from this module. The following tags can be
-used to selectively import constants and functions defined in this module:
-
- :CONSTANTS   EO_ERROR, EO_NONE, EO_ITEM, and EO_GROUP
-
- :ALL         :CONSTANTS
-
-=head1 EXAMPLES
-
-The following is an example of output of the C<dump()> method for a Perl exacct
-Group object.
-
- GROUP
-   Catalog = EXT_GROUP|EXC_DEFAULT|EXD_GROUP_PROC_PARTIAL
-   ITEM
-     Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_PID
-     Value = 3
-    ITEM
-      Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_UID
-      Value = 0
-    ITEM
-      Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_GID
-      Value = 0
-    ITEM
-      Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_PROJID
-      Value = 0
-    ITEM
-      Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_TASKID
-      Value = 0
-    ITEM
-      Catalog = EXT_STRING|EXC_DEFAULT|EXD_PROC_COMMAND
-      Value = fsflush
- ENDGROUP
- 
-=head1 ATTRIBUTES
-
-See C<attributes(5)> for descriptions of the following attributes:
-
-  ___________________________________________________________
- |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
- |_____________________________|_____________________________|
- | Availability                | CPAN (http://www.cpan.org)  |
- |_____________________________|_____________________________|
- | Interface Stability         | Evolving                    |
- |_____________________________|_____________________________|
-
-=head1 SEE ALSO
-
-C<ea_match_object_catalog(3EXACCT)>, C<Sun::Solaris::Exacct(3)>,
-C<Sun::Solaris::Exacct::Catalog(3)>, C<Sun::Solaris::Exacct::File(3)>,
-C<Sun::Solaris::Exacct::Object::Group(3)>,
-C<Sun::Solaris::Exacct::Object::Item(3)>, C<libexacct(3LIB)>, C<attributes(5)>
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/t/README	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,20 +0,0 @@
-#
-# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
-#
-
-This directory contains a stress-test harness for the ::Exacct module.
-This will detect bugs in both the perl code and the underlying libexacct
-library.  To use, build the ::Exacct module in the parent directory, then:
-
-$ cc -o randtest randtest.c -lexacct
-$ chmod a+x RandTest
-$ ./RandTest
-
-The test script will run until interrupted by SIGINT.  If any errors are
-detected, the script will exit and leave diganostic files in /tmp.
-
-Running this under a memory checker, e.g. the WorkShop debugger or libumem
-is also a good way of detecting errors.
-
-If you wish to run this on the installed version of the ::Exacct module,
-remove the 'use blib' statement on line 14 of RandTest.
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/t/RandTest	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,227 +0,0 @@
-#!/usr/perl5/bin/perl
-#
-# Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# This script is a stress test for ::Exacct and libexacct.
-# See README for details.
-#
-
-use strict;
-use warnings;
-use blib;
-use POSIX qw(:sys_wait_h);
-
-use Sun::Solaris::Exacct qw(:ALL);
-use Sun::Solaris::Exacct::Catalog qw(:ALL);
-use Sun::Solaris::Exacct::Object qw(:ALL);
-use Sun::Solaris::Exacct::File qw(:ALL);
-use Fcntl;
-
-our $exit = 0;
-our $ono  = 1;
-our $maxono = 1000;	# max = 16777216 (2^24)
-
-#
-# Dump an object.
-#
-sub dump_object
-{
-	my ($obj, $fh, $indent) = @_;
-	$fh ||= \*STDOUT;
-	$indent ||= 0;
-	my @cat = $obj->catalog()->value();
-	my $istr = '  ' x $indent;
-
-	if ($obj->type() == &EO_ITEM) {
-		printf $fh ("%sITEM\n%s  Catalog = %s|%s|%d\n", 
-		   $istr, $istr, @cat);
-		$indent++;
-		my $val = $obj->value();
-		if (ref($val)) {
-			dump_object($val, $fh, $indent);
-		} else {
-			printf $fh ("%s  Value = %s\n", $istr, $val);
-		}
-	} else {
-		printf $fh ("%sGROUP\n%s  Catalog = %s|%s|%d\n",
-		    $istr, $istr, @cat);
-		$indent++;
-		foreach my $val ($obj->value()) {
-			dump_object($val, $fh, $indent);
-		}
-		printf $fh ("%sENDGROUP\n", $istr);
-	}
-}
-
-#
-# Dump a list of objects.
-#
-sub dump_objects
-{
-	my ($fh, $objs) = @_;
-	foreach my $o (@$objs) {
-		dump_object($o, $fh);
-	}
-}
-
-#
-# Build up a set of random objects.
-#
-sub gen_objs
-{
-	my ($nobjs, $embed) = @_;
-	$nobjs += $ono;
-	$embed ||= 0;
-	my @objs;
-	while ($ono < $nobjs) {
-		my $rt = int(rand(9)) + 1;
-		$rt = 15 if ($rt >= 9);	# Group.
-		$rt <<= 28;
-		if ($rt == &EXT_UINT8) {
-			push(@objs, ea_new_item($rt | $ono++, 8));
-		} elsif ($rt == &EXT_UINT16) {
-			push(@objs, ea_new_item($rt | $ono++, 16));
-		} elsif ($rt == &EXT_UINT32) {
-			push(@objs, ea_new_item($rt | $ono++, 32));
-		} elsif ($rt == &EXT_UINT64) {
-			push(@objs, ea_new_item($rt | $ono++, 64));
-		} elsif ($rt == &EXT_DOUBLE) {
-			push(@objs, ea_new_item($rt | $ono++,
-			    123456789.123456789));
-		} elsif ($rt == &EXT_STRING) {
-			push(@objs, ea_new_item($rt | $ono++, "string"));
-		} elsif ($rt == &EXT_EXACCT_OBJECT) {
-			my $o = $ono++;
-			my $i = int(rand($nobjs - $ono)) + 1;
-			push(@objs, ea_new_item($rt | $o, gen_objs($i, 1)));
-		} elsif ($rt == &EXT_RAW) {
-			push(@objs, ea_new_item($rt | $ono++, "RAWrawRAW"));
-		} elsif ($rt == &EXT_GROUP) {
-			my $o = $ono++;
-			my $i = int(rand($nobjs - $ono + 1));
-			push(@objs, ea_new_group($rt | $o, gen_objs($i)));
-		}
-
-		# If for an embedded object, just return 1 object.
-		last if ($embed);
-	}
-	return(@objs);
-}
-
-#
-# Main routine.
-#
-$| = 1;
-$SIG{INT} = $SIG{TERM} = $SIG{HUP} = sub { $exit = 1; };
-my $iters = 0;
-while (! $exit) {
-	print(".");
-
-	# Generate and output some random records.
-	my $f = ea_new_file("/tmp/wr.$$", &O_RDWR | &O_CREAT | &O_TRUNC)
-	    || die("\ncreate /tmp/wr.$$ failed: ", ea_error_str(), "\n");
-	my @outobjs = gen_objs($maxono);
-	$f->write(@outobjs);
-	$f = undef;
-	open($f, ">/tmp/wr1.$$") || die("\nopen /tmp/wr1.$$ failed: $!\n");
-	dump_objects($f, \@outobjs);
-	close($f);
-	@outobjs = ();
-
-	# Scan the file forwards with next.
-	$f = ea_new_file("/tmp/wr.$$", &O_RDONLY)
-	    || die("\nopen /tmp/wr.$$ failed: ", ea_error_str(), "\n");
-	while ($f->next()) {
-		;
-	}
-	die("\nnext /tmp/wr.$$ failed: ", ea_error_str(), "\n")
-	    unless (ea_error() == EXR_EOF);
-	$f = undef;
-
-	# Scan the file backwards with previous.
-	$f = ea_new_file("/tmp/wr.$$", &O_RDONLY, aflags => &EO_TAIL)
-	    || die("\nopen /tmp/wr.$$ failed: ", ea_error_str(), "\n");
-	while ($f->previous()) {
-		;
-	}
-	die("\nprevious /tmp/wr.$$ failed: ", ea_error_str(), "\n")
-	    unless (ea_error() == EXR_EOF);
-	$f = undef;
-
-	# Read the file forwards with get.
-	my @inobjs = ();
-	$f = ea_new_file("/tmp/wr.$$", &O_RDONLY)
-	    || die("\nopen /tmp/wr.$$ failed: ", ea_error_str(), "\n");
-	while (my $obj = $f->get()) {
-		push(@inobjs, $obj);
-	}
-	die("\nget /tmp/wr.$$ failed: ", ea_error_str(), "\n")
-	    unless (ea_error() == EXR_EOF);
-	$f = undef;
-
-	# Dump the objects and compare with original.
-	open($f, ">/tmp/wr2.$$") || die("\nopen /tmp/wr2.$$ failed: $!\n");
-	dump_objects($f, \@inobjs);
-	close($f);
-	if (system("cmp -s /tmp/wr1.$$ /tmp/wr2.$$") != 0) {
-		die("\nget cmp failed /tmp/wr2.$$\n");
-	}
-
-	# Read the file forwards with next and get.
-	@inobjs = ();
-	$f = ea_new_file("/tmp/wr.$$", &O_RDONLY)
-	    || die("\nopen /tmp/wr.$$ failed: ", ea_error_str(), "\n");
-	while ($f->next()) {
-		my $obj = $f->get();
-		push(@inobjs, $obj);
-	}
-	die("\nnext/get /tmp/wr.$$ failed: ", ea_error_str(), "\n")
-	    unless (ea_error() == EXR_EOF);
-	$f = undef;
-
-	# Dump the objects and compare with original.
-	open($f, ">/tmp/wr2.$$") || die("\nopen /tmp/wr2.$$ failed: $!\n");
-	dump_objects($f, \@inobjs);
-	close($f);
-	if (system("cmp -s /tmp/wr1.$$ /tmp/wr2.$$") != 0) {
-		die("\nnext/get cmp failed /tmp/wr2.$$\n");
-	}
-
-	# Read the file backwards with previous and get.
-	@inobjs = ();
-	$f = ea_new_file("/tmp/wr.$$", &O_RDONLY, aflags => &EO_TAIL)
-	    || die("\nopen /tmp/wr.$$ failed: ", ea_error_str(), "\n");
-	while ($f->previous()) {
-		my $obj = $f->get();
-		$f->previous();
-		unshift(@inobjs, $obj);
-	}
-	die("\nprevious/get /tmp/wr.$$ failed: ", ea_error_str(), "\n")
-	    unless (ea_error() == EXR_EOF);
-	$f = undef;
-
-	# Dump the objects and compare with original.
-	open($f, ">/tmp/wr2.$$") || die("\nopen /tmp/wr2.$$ failed: $!\n");
-	dump_objects($f, \@inobjs);
-	close($f);
-	if (system("cmp -s /tmp/wr1.$$ /tmp/wr2.$$") != 0) {
-		die("\nprevious/get cmp failed /tmp/wr2.$$\n");
-	}
-
-	# Run randtest on the file.
-	foreach my $sz (qw(5 10 50 100)) {
-		my $s = system ("./randtest 1000 $sz /tmp/wr.$$") >> 8;
-		if ($s == 2) {
-			$exit = 1;
-		} elsif ($s != 0) {
-			die("randtest 1000 $sz /tmp/wr.$$ failed $s\n");
-		}
-	}
-
-	$iters++;
-}
-unlink("/tmp/wr.$$", "/tmp/wr1.$$", "/tmp/wr2.$$") ||
-    die("\nCan't cleanup: $!\n");
-print("\n$iters iterations completed\n");
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/t/dummy.t	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,8 +0,0 @@
-#
-# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Dummy test so 'make test' doesn't fail.
-#
-print("1..1\nok \1n");
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/t/randtest.c	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,235 +0,0 @@
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- *
- * This program is part of a stress test for ::Exacct and libexacct.
- * See README for details.
- */
-
-/* Turn largefile support on. */
-#define	_FILE_OFFSET_BITS 64
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <strings.h>
-#include <signal.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <exacct.h>
-#include <exacct_impl.h>
-
-static char *ea_errstr[] = {
-	"EXR_OK",
-	"EXR_SYSCALL_FAIL",
-	"EXR_CORRUPT_FILE",
-	"EXR_EOF",
-	"EXR_NO_CREATOR",
-	"EXR_INVALID_BUF",
-	"EXR_NOTSUPP",
-	"EXR_UNKN_VERSION",
-	"EXR_INVALID_OBJ",
-};
-
-#define	LOGSZ 100
-#define	LINESZ 81
-static char log[LOGSZ][LINESZ];
-static int log_op, log_pos;
-
-static char *type_str(ea_object_type_t type)
-{
-	switch (type & EXT_TYPE_MASK) {
-	case EXT_NONE:
-		return ("NONE");
-	case EXT_UINT8:
-		return ("UINT8");
-	case EXT_UINT16:
-		return ("UINT16");
-	case EXT_UINT32:
-		return ("UINT32");
-	case EXT_UINT64:
-		return ("UINT64");
-	case EXT_DOUBLE:
-		return ("DOUBLE");
-	case EXT_STRING:
-		return ("STRING");
-	case EXT_EXACCT_OBJECT:
-		return ("OBJECT");
-	case EXT_RAW:
-		return ("RAW");
-	case EXT_GROUP:
-		return ("GROUP");
-	default:
-		return ("INVALID");
-	}
-}
-
-static void logmsg(const char *msg, char dir, ea_file_t *f, ea_object_t *obj)
-{
-	ea_file_impl_t *fi;
-	off_t pos;
-	char buf[LINESZ];
-	char posbuf[10];
-
-	fi = (ea_file_impl_t *)f;
-	pos = ftello(fi->ef_fp);
-	log_op++;
-	if (fi->ef_ndeep < 0) {
-		(void) strlcpy(posbuf, "0/0", sizeof (posbuf));
-	} else {
-		(void) snprintf(posbuf, sizeof (posbuf), "%d/%d",
-		    fi->ef_depth[fi->ef_ndeep].efd_obj + 1,
-		    fi->ef_depth[fi->ef_ndeep].efd_nobjs);
-	}
-	(void) snprintf(log[log_pos], LINESZ,
-	    "%-6d %c off=0x%-5llx depth=%-2d pos=%-7s adv=0x%-3llx %s",
-	    log_op, dir, pos, fi->ef_ndeep, posbuf, fi->ef_advance, msg);
-	if (obj != NULL) {
-		if ((obj->eo_type & EXT_TYPE_MASK) == EXT_GROUP) {
-			(void) snprintf(buf, LINESZ, " %s #%d len=%d",
-			    type_str(obj->eo_catalog),
-			    obj->eo_catalog & EXD_DATA_MASK,
-			    obj->eo_group.eg_nobjs);
-		} else {
-			(void) snprintf(buf, LINESZ, " %s #%d",
-			    type_str(obj->eo_catalog),
-			    obj->eo_catalog & EXD_DATA_MASK);
-		}
-		(void) strlcat(log[log_pos], buf, LINESZ);
-	}
-	log_pos = (log_pos + 1) % LOGSZ;
-}
-
-static void die(ea_file_t *f, const char *msg)
-{
-	int i, l;
-	char buf[LINESZ];
-
-	bzero(buf, sizeof (buf));
-	if (ea_error() == EXR_SYSCALL_FAIL) {
-		(void) strlcat(buf, strerror(errno), sizeof (buf));
-	}
-	(void) printf("\nError at offset 0x%lx: %s: %s %s\n",
-	    ftell(((ea_file_impl_t *)f)->ef_fp), msg,
-	    ea_errstr[ea_error()], buf);
-	(void) printf("Last %d operations:\n", LOGSZ);
-	for (i = LOGSZ, l = log_pos; i > 0; i--, l = (l + 1) % LOGSZ) {
-		if (log[l][0] != '\0') {
-			(void) printf("%s\n", log[l]);
-		}
-	}
-	exit(1);
-}
-
-/* ARGSUSED */
-static void stop(int sig)
-{
-	exit(2);
-}
-
-static int
-do_reads(ea_file_t *f, char dir, int sz)
-{
-	ea_object_t	obj;
-	unsigned char	act;
-
-	bzero(&obj, sizeof (obj));
-	while (sz--) {
-
-		act = 0x01 << (lrand48() & 0x01);
-
-		/* If reading backwards */
-		if (dir == 'B') {
-			logmsg("> ea_previous_object", dir, f, NULL);
-			if (ea_previous_object(f, &obj) == EO_ERROR) {
-				if (ea_error() == EXR_EOF) {
-					logmsg("! SOF", dir, f, NULL);
-					return ('F');
-				} else {
-					die(f, "ea_previous_object");
-				}
-			}
-			logmsg("< ea_previous_object", dir, f, NULL);
-		}
-
-		/* Do a ea_next_object 50% of the time */
-		if (act & 0x01) {
-			logmsg("> ea_next_object", dir, f, NULL);
-			if (ea_next_object(f, &obj) == EO_ERROR) {
-				if (ea_error() == EXR_EOF) {
-					logmsg("! EOF", dir, f, NULL);
-					return (dir == 'F' ? 'B' : 'F');
-				} else {
-					die(f, "ea_next_object");
-				}
-			}
-			logmsg("< ea_next_object", dir, f, NULL);
-		}
-
-		/* Do a ea_get_object 50% of the time */
-		if (act & 0x02) {
-			logmsg("> ea_get_object", dir, f, NULL);
-			if (ea_get_object(f, &obj) == EO_ERROR) {
-				if (ea_error() == EXR_EOF) {
-					logmsg("! EOF", dir, f, NULL);
-					return (dir == 'F' ? 'B' : 'F');
-				} else {
-					die(f, "ea_get_object");
-				}
-			}
-			logmsg("< ea_get_object", dir, f, &obj);
-			(void) ea_free_item(&obj, EUP_ALLOC);
-		}
-
-		/* If reading backwards */
-		if (dir == 'B') {
-			logmsg("> ea_previous_object", dir, f, NULL);
-			if (ea_previous_object(f, &obj) == EO_ERROR) {
-				if (ea_error() == EXR_EOF) {
-					logmsg("! SOF", dir, f, NULL);
-					return ('F');
-				} else {
-					die(f, "ea_get_object");
-				}
-			}
-			logmsg("< ea_previous_object", dir, f, NULL);
-		}
-	}
-	return (' ');
-}
-
-int
-main(int argc, char **argv)
-{
-	int		iters, maxsz, sz;
-	char		dir;
-	ea_file_t	f;
-
-	(void) signal(SIGINT, stop);
-	(void) signal(SIGTERM, stop);
-	(void) signal(SIGHUP, stop);
-
-	if (argc != 4) {
-		(void) fprintf(stderr,
-		    "Usage: randtest <iters> <maxsz> <file>\n");
-		return (2);
-	}
-	iters = atoi(argv[1]);
-	maxsz = atoi(argv[2]);
-	bzero(log, sizeof (log));
-	log_pos = log_op = 0;
-
-	if (ea_open(&f, argv[3], NULL, EO_HEAD, O_RDONLY, 0) == -1) {
-		perror("open failed");
-		return (1);
-	}
-	srand48((long)(gethrtime() & ~0L));
-	dir = 'F';
-	while (iters--) {
-		if (dir == ' ') {
-			dir = (lrand48() % 2) ? 'F' : 'B';
-		}
-		sz = (lrand48() % maxsz) + 1;
-		dir = do_reads(&f, dir, sz);
-	}
-	(void) ea_close(&f);
-	return (0);
-}
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Exacct/typemap	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,73 +0,0 @@
-#
-# Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Typemap for common exacct types.
-#
-# Note that the Exacct types need to end in REF to make xsubpp do
-# the right thing.
-#
-
-TYPEMAP
-	idtype_t		T_IV
-	id_t			T_IV
-	taskid_t		T_IV
-	projid_t		T_IV
-	xs_ea_object_t *	T_XSEAOBJREF
-	ea_file_t *		T_EAFILEREF
-
-INPUT
-
-#
-# xs_ea_object_t must be blessed into either ::Object::Item or ::Object::Group.
-# The underlying value is a pointer masquerading as an IV.
-#
-T_XSEAOBJREF
-	{
-		SV *sv = SvRV($arg);
-		HV *stash = sv ? SvSTASH(sv) : NULL;
-		if (stash == Sun_Solaris_Exacct_Object_Item_stash ||
-		    stash == Sun_Solaris_Exacct_Object_Group_stash) {
-			IV tmp = SvIV(sv);
-			$var = INT2PTR($type, tmp);
-		} else {
-			croak(\"$var is not of type $Package\");
-		}
-	}
-
-#
-# ea_file_t must be blessed into ::File.
-# The underlying value is a pointer masquerading as an IV.
-#
-T_EAFILEREF
-	{
-		SV *sv = SvRV($arg);
-		HV *stash = sv ? SvSTASH(sv) : NULL;
-		if (stash == ${my $p=$Package.'_stash'; $p=~s/::/_/g; \$p}) {
-			IV tmp = SvIV(sv);
-			$var = INT2PTR($type, tmp);
-		} else {
-			croak(\"$var is not of type $Package\");
-		}
-	}
-
-OUTPUT
-
-T_XSEAOBJREF
-	if ($var == NULL) {
-		sv_setsv($arg, &PL_sv_undef);
-	} else {
-		sv_setiv(newSVrv($arg, NULL), PTR2IV($var));
-		sv_bless($arg, ${my $p=$Package.'_stash'; $p=~s/::/_/g; \$p});
-		SvREADONLY_on(SvRV($arg));
-	}
-
-T_EAFILEREF
-	if ($var == NULL) {
-		sv_setsv($arg, &PL_sv_undef);
-	} else {
-		sv_setiv(newSVrv($arg, NULL), PTR2IV($var));
-		sv_bless($arg, ${my $p=$Package.'_stash'; $p=~s/::/_/g; \$p});
-		SvREADONLY_on(SvRV($arg));
-	}
--- /dev/null	Tue Apr 22 05:37:42 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Intrs/Makefile	Tue Apr 22 05:37:42 2014
@@ -0,0 +1,33 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright (c) 2014 Racktop Systems.
+# Copyright 2014, OmniTI Computer Consulting, Inc. All rights reserved.
+#
+
+MODULE = Intrs
+
+include $(SRC)/cmd/perl/Makefile.perl
+
+CERRWARN += -_gcc=-Wno-unused-variable
+
+MAPFILES = mapfile-vers
+
+include $(SRC)/cmd/perl/Makefile.targ
+
+.KEEP_STATE:
+
+all: $(PERLEXT) $(PERLMOD) $(PERLEXT64)
+
+install: $(ROOTPERLEXT) $(ROOTPERLMOD) $(ROOTPERLEXT64) $(ROOTPERLMOD64)
+
+clean clobber:
+	$(RM) -r $(MACH) $(MACH64)
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Intrs/Makefile.PL	Tue Apr 22 05:37:42 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,50 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-
-#
-# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
-#
-
-require 5.8.4;
-use strict;
-use warnings;
-use ExtUtils::MakeMaker;
-
-#
-# This module uses non-shipping headers - if we ever want to put it on CPAN
-# this Makefile will need to change first - see one of the other contrib
-# Makefile.PL files for a template.
-#
-
-WriteMakefile(
-    NAME		=> 'Sun::Solaris::Intrs',
-    VERSION_FROM	=> 'Intrs.pm',
-    DEFINE		=> exists($ENV{RELEASE_BUILD}) ? '-DNDEBUG' : '',
-
-    # ../../../../../../../uts/common can be removed when Perl leaves O/N
-
-    # ../../../../../../../uts/common refers to 5.8.4 building in 5.8.4/contrib
-    # whereas later versions build in $(VERSION)/
-
-    # Must be a relative path to avoid being interpreted as a proto area path.
-    INC			=> "-I../../../../../../../uts/common -I../../../../../../uts/common",
-    MAN3PODS		=> {},
-);
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Intrs/inc.flg	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:42 2014
@@ -1,30 +0,0 @@
-#!/bin/sh
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# ident	"%Z%%M%	%I%	%E% SMI"
-#
-
-echo_file usr/src/uts/common/sys/pci_tools.h
--- /dev/null	Tue Apr 22 05:37:43 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Intrs/mapfile-vers	Tue Apr 22 05:37:43 2014
@@ -0,0 +1,24 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright (c) 2014 Racktop Systems.
+#
+
+$mapfile_version 2
+
+SYMBOL_SCOPE {
+    global:
+	boot_Sun__Solaris__Intrs;
+	XS_Sun__Solaris__Intrs_is_apic;
+	XS_Sun__Solaris__Intrs_intrmove;
+    local:
+        *;
+};
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Kstat/Kstat.xs	Tue Apr 22 05:37:43 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Kstat/Kstat.xs	Tue Apr 22 05:37:43 2014
@@ -21,6 +21,7 @@
 
 /*
  * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014 Racktop Systems.
  */
 
 /*
@@ -894,7 +895,6 @@
 {
 	HV	*hash1;
 	HE	*entry1;
-	long	s;
 	int	ret;
 
 	hash1 = (HV *)SvRV(self);
@@ -902,7 +902,7 @@
 	ret = 1;
 
 	/* Iterate over each module */
-	while (entry1 = hv_iternext(hash1)) {
+	while ((entry1 = hv_iternext(hash1))) {
 		HV *hash2;
 		HE *entry2;
 
@@ -910,7 +910,7 @@
 		hv_iterinit(hash2);
 
 		/* Iterate over each module:instance */
-		while (entry2 = hv_iternext(hash2)) {
+		while ((entry2 = hv_iternext(hash2))) {
 			HV *hash3;
 			HE *entry3;
 
@@ -918,10 +918,9 @@
 			hv_iterinit(hash3);
 
 			/* Iterate over each module:instance:name */
-			while (entry3 = hv_iternext(hash3)) {
+			while ((entry3 = hv_iternext(hash3))) {
 				HV    *hash4;
 				MAGIC *mg;
-				HV    *tie;
 
 				/* Get the tie */
 				hash4 = (HV *)SvRV(hv_iterval(hash3, entry3));
@@ -976,7 +975,7 @@
 	ret = 0;
 
 	/* Iterate over each module */
-	while (entry1 = hv_iternext(hash1)) {
+	while ((entry1 = hv_iternext(hash1))) {
 		HV *hash2;
 		HE *entry2;
 
@@ -985,7 +984,7 @@
 		hv_iterinit(hash2);
 
 		/* Iterate over each module:instance */
-		while (entry2 = hv_iternext(hash2)) {
+		while ((entry2 = hv_iternext(hash2))) {
 			HV *hash3;
 			HE *entry3;
 
@@ -994,7 +993,7 @@
 			hv_iterinit(hash3);
 
 			/* Iterate over each module:instance:name */
-			while (entry3 = hv_iternext(hash3)) {
+			while ((entry3 = hv_iternext(hash3))) {
 				HV    *hash4;
 				MAGIC *mg;
 				HV    *tie;
@@ -1084,7 +1083,7 @@
 			break;
 		default:
 			PERL_ASSERTMSG(0, "kstat_read: invalid data type");
-			break;
+			continue;
 		}
 		hv_store(self, knp->name, strlen(knp->name), value, 0);
 	}
@@ -1625,7 +1624,7 @@
 	self = SvRV(self);
 	read_kstats((HV *)self, FALSE);
 	hv_iterinit((HV *)self);
-	if (he = hv_iternext((HV *)self)) {
+	if ((he = hv_iternext((HV *)self))) {
 		EXTEND(SP, 1);
 		PUSHs(hv_iterkeysv(he));
 	}
@@ -1642,7 +1641,7 @@
 	HE *he;
 PPCODE:
 	self = SvRV(self);
-	if (he = hv_iternext((HV *)self)) {
+	if ((he = hv_iternext((HV *)self))) {
 		EXTEND(SP, 1);
 		PUSHs(hv_iterkeysv(he));
 	}
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Kstat/MANIFEST	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,4 +0,0 @@
-Kstat.pm
-Kstat.xs
-Makefile.PL
-t/Kstat.t
--- /dev/null	Tue Apr 22 05:37:43 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Kstat/Makefile	Tue Apr 22 05:37:43 2014
@@ -0,0 +1,36 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright (c) 2014 Racktop Systems.
+# Copyright 2014, OmniTI Computer Consulting, Inc. All rights reserved.
+#
+
+MODULE = Kstat
+
+include $(SRC)/cmd/perl/Makefile.perl
+
+LDLIBS += -lkstat
+
+CERRWARN += -_gcc=-Wno-unused-value
+CERRWARN += -_gcc=-Wno-unused-variable
+
+MAPFILES = mapfile-vers
+
+include $(SRC)/cmd/perl/Makefile.targ
+
+.KEEP_STATE:
+
+all: $(PERLEXT) $(PERLMOD) $(PERLEXT64)
+
+install: $(ROOTPERLEXT) $(ROOTPERLMOD) $(ROOTPERLEXT64) $(ROOTPERLMOD64)
+
+clean clobber:
+	$(RM) -r $(MACH) $(MACH64)
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Kstat/Makefile.PL	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,60 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-
-#
-# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# ident	"%Z%%M%	%I%	%E% SMI"
-#
-
-use ExtUtils::MakeMaker;
-my ($defines, $includes) = ('', '');
-
-# Uncomment this to turn on assertions
-#$defines .= '-DKSTAT_DEBUG ';
-
-# Uncomment this to report unknown binary kstats
-#$defines .= '-DREPORT_UNKNOWN ';
-
-#
-# Because there are still platform specific raw kstats, we need to include the
-# platform specific header files, so work out where they live.
-#
-my $arch = qx{uname -p}; chomp($arch);
-if ($arch eq 'sparc') {
-	$includes .= '-I/usr/platform/sun4u/include' .
-	    ' -I/usr/platform/sun4v/include';
-} elsif ($arch eq 'i386') {
-	$includes .= '-I/usr/platform/i86pc/include' .
-	    ' -I/usr/platform/i86xpv/include';
-} else {
-	die("Unknown architecture $arch\n");
-}
-
-WriteMakefile(
-    NAME         => 'Sun::Solaris::Kstat',
-    VERSION_FROM => 'Kstat.pm',
-    LIBS         => [ '-lkstat' ],
-    DEFINE       => $defines,
-    INC          => $includes,
-    OBJECT       => '$(O_FILES)',
-);
--- /dev/null	Tue Apr 22 05:37:43 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Kstat/mapfile-vers	Tue Apr 22 05:37:43 2014
@@ -0,0 +1,32 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright (c) 2014 Racktop Systems.
+#
+
+$mapfile_version 2
+
+SYMBOL_SCOPE {
+    global:
+	boot_Sun__Solaris__Kstat;
+	XS_Sun__Solaris__Kstat___Stat_CLEAR;
+	XS_Sun__Solaris__Kstat___Stat_DELETE;
+	XS_Sun__Solaris__Kstat___Stat_EXISTS;
+	XS_Sun__Solaris__Kstat___Stat_FETCH;
+	XS_Sun__Solaris__Kstat___Stat_FIRSTKEY;
+	XS_Sun__Solaris__Kstat___Stat_NEXTKEY;
+	XS_Sun__Solaris__Kstat___Stat_STORE;
+	XS_Sun__Solaris__Kstat_DESTROY;
+	XS_Sun__Solaris__Kstat_new;
+	XS_Sun__Solaris__Kstat_update;
+    local:
+	*;
+};
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Lgrp/Lgrp.pm	Tue Apr 22 05:37:43 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Lgrp/Lgrp.pm	Tue Apr 22 05:37:43 2014
@@ -22,6 +22,7 @@
 #
 # Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
 # Use is subject to license terms.
+# Copyright (c) 2014 Racktop Systems.
 #
 
 #
@@ -30,7 +31,7 @@
 #
 
 
-require 5.8.4;
+require 5.0010;
 use strict;
 use warnings;
 use Carp;
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Lgrp/MANIFEST	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,10 +0,0 @@
-Changes
-Makefile.PL
-MANIFEST
-Lgrp.pm
-Lgrp.xs
-README
-typemap
-pod/Lgrp.pod
-t/Lgrp.t
-t/Lgrp_api.t
--- /dev/null	Tue Apr 22 05:37:43 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Lgrp/Makefile	Tue Apr 22 05:37:43 2014
@@ -0,0 +1,37 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright (c) 2014 Racktop Systems.
+# Copyright 2014, OmniTI Computer Consulting. All rights reserved.
+#
+
+MODULE = Lgrp
+
+include $(SRC)/cmd/perl/Makefile.perl
+
+LDLIBS += -llgrp
+
+CERRWARN += -_gcc=-Wno-type-limits
+
+XSUBPPFLAGS = -typemap typemap
+
+MAPFILES = mapfile-vers
+
+include $(SRC)/cmd/perl/Makefile.targ
+
+.KEEP_STATE:
+
+all: $(PERLEXT) $(PERLMOD) $(PERLEXT64)
+
+install: $(ROOTPERLEXT) $(ROOTPERLMOD) $(ROOTPERLEXT64) $(ROOTPERLMOD64)
+
+clean clobber:
+	$(RM) -r $(MACH) $(MACH64)
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Lgrp/Makefile.PL	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,87 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-
-#
-# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-
-require 5.8.4;
-use strict;
-use warnings;
-use ExtUtils::MakeMaker;
-
-# #defines.
-my @defines = ( DEFINE => exists($ENV{RELEASE_BUILD}) ? '-DNDEBUG' : '' );
-
-# List of POD pages to install.
-my @man3pods = ( MAN3PODS => {} );
-
-
-#
-# If not building as part of ON.
-#
-if (! exists($ENV{CODEMGR_WS})) {
-
-	#
-	# Suppress the setting of LD_RUN_PATH.  The ON build environment
-	# contains a modified MakeMaker that does this automatically, so we
-	# only need to do this if we are building outside of ON.
-	#
-	package MY;
-	no warnings qw(once);
-
-	# Override const_loadlibs to remove LD_RUN_PATH cruft.
-	*const_loadlibs = sub
-	{
-		my $self = shift(@_);
-		delete($self->{LD_RUN_PATH});
-		return($self->SUPER::const_loadlibs(@_));
-	};
-
-	# Override dynamic_lib to get rid of LD_RUN_PATH cruft.
-	*dynamic_lib = sub
-	{
-		my $self = shift(@_);
-		my $txt = $self->SUPER::dynamic_lib(@_);
-		$txt =~ s/LD_RUN_PATH=\S*\s*//;
-		return($txt);
-	};
-
-	# Turn off debugging.
-	@defines = ();
-
-	#
-	# Install the POD documentation for non-ON builds.
-	#
-	my $man3pfx = '$(INST_MAN3DIR)/Sun::Solaris::Lgrp';
-	@man3pods = (
-	    MAN3PODS => { 'pod/Lgrp.pod' => $man3pfx . '.$(MAN3EXT)' }
-	);
-}
-
-WriteMakefile(
-    NAME              => 'Sun::Solaris::Lgrp',
-    VERSION_FROM      => 'Lgrp.pm',
-    LIBS              => ['-llgrp '],
-    @defines,
-    @man3pods,
-);
--- /dev/null	Tue Apr 22 05:37:43 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Lgrp/mapfile-vers	Tue Apr 22 05:37:43 2014
@@ -0,0 +1,39 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright (c) 2014 Racktop Systems.
+#
+
+$mapfile_version 2
+
+SYMBOL_SCOPE {
+    global:
+	boot_Sun__Solaris__Lgrp;
+	XS_Sun__Solaris__Lgrp_lgrp_affinity_get;
+	XS_Sun__Solaris__Lgrp_lgrp_affinity_set;
+	XS_Sun__Solaris__Lgrp_lgrp_children;
+	XS_Sun__Solaris__Lgrp_lgrp_cookie_stale;
+	XS_Sun__Solaris__Lgrp_lgrp_cpus;
+	XS_Sun__Solaris__Lgrp_lgrp_fini;
+	XS_Sun__Solaris__Lgrp_lgrp_home;
+	XS_Sun__Solaris__Lgrp_lgrp_init;
+	XS_Sun__Solaris__Lgrp_lgrp_latency;
+	XS_Sun__Solaris__Lgrp_lgrp_latency_cookie;
+	XS_Sun__Solaris__Lgrp_lgrp_mem_size;
+	XS_Sun__Solaris__Lgrp_lgrp_nlgrps;
+	XS_Sun__Solaris__Lgrp_lgrp_parents;
+	XS_Sun__Solaris__Lgrp_lgrp_resources;
+	XS_Sun__Solaris__Lgrp_lgrp_root;
+	XS_Sun__Solaris__Lgrp_lgrp_version;
+	XS_Sun__Solaris__Lgrp_lgrp_view;
+    local:
+	*;
+};
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/PerlGcc/Changes	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,4 +0,0 @@
-1.1  Mon Jun 07 2004
---------------------
-
-Initial version, derived from Sun::PerlGcc
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/PerlGcc/MANIFEST	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,7 +0,0 @@
-Changes
-Makefile.PL
-MANIFEST
-perlgcc.PL
-pod/perlgcc.pod
-config/5.8.4/5.11/sparc/Config.pm
-config/5.8.4/5.11/i386/Config.pm
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/PerlGcc/Makefile.PL	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,93 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-
-#
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
-#
-
-require 5.8.4;
-use strict;
-use warnings;
-use ExtUtils::MakeMaker;
-use Config;
-
-#
-# Compare OS versions.
-#
-sub cmp_os_ver
-{
-	our ($a, $b);
-	my @v1 = split(/\./, $a);
-	my @v2 = split(/\./, $b);
-	my $diff = 0;
-	while (@v1 || @v2) {
-		last if (($diff = shift(@v1) - shift(@v2)) != 0);
-	}
-	return ($diff);
-}
-
-# Check we are on a supported OS version.
-my $rel = qx{uname -r}; chomp($rel);
-my $arch = qx{uname -p}; chomp($arch);
-my $pver = sprintf('%vd', $^V);
-
-# Figure out the appropriate Config.pm.  Use an older version if necessary.
-my $perlarch = $Config{"archname"};
-
-my $configpm = "/usr/perl5/$pver/lib/$perlarch/Config.pm";
-if (! -f $configpm) {
-	my $p = "config/$pver";
-	my $dh;
-	opendir($dh, $p) || die("Can't read directory $_: $!\n");
-	my $old_rel = (sort(cmp_os_ver
-	    grep(-d "$p/$_" && $_ =~ /^\d[\d.]+\d$/, readdir($dh))))[-1];
-	closedir($dh);
-	if (defined($old_rel)) {
-		print(STDERR "Warning: No config file for OS version $rel, " .
-		    "using $old_rel file\n");
-		$rel = $old_rel;
-		$configpm = "config/$pver/$rel/$arch/Config.pm";
-	} else {
-		die("Unsupported version of Perl/OS/Architecture " .
-		    "$pver/$rel/$arch\n");
-	}
-} else {
-	open CONFIGPM, "<", $configpm or die $!;
-	open CONFIGPM_OUT, ">", "Config.pm" or die $!;
-	while(<CONFIGPM>) {
-		if (/'cc/) {
-			s/=>\s*'cc/=> 'gcc/;
-			s/=\s*'cc/='gcc/;
-		}
-		print CONFIGPM_OUT $_;
-	}
-	close CONFIGPM;
-	close CONFIGPM_OUT;
-	$configpm = "Config.pm";
-}
-
-WriteMakefile(
-    NAME         => 'Sun::Solaris::PerlGcc',
-    VERSION_FROM => 'perlgcc.PL',
-    PM           => { $configpm => '$(INST_LIBDIR)/PerlGcc/Config.pm' },
-    MAN1PODS     => { },
-    MAN3PODS     => { }, # Stop autopodification.
-);
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/PerlGcc/config/5.8.4/5.11/i386/Config.pm	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,1292 +0,0 @@
-# This file was created by configpm when Perl was built. Any changes
-# made to this file will be lost the next time perl is built.
-
-package Config;
-@EXPORT = qw(%Config);
-@EXPORT_OK = qw(myconfig config_sh config_vars config_re);
-
-my %Export_Cache = map {($_ => 1)} (@EXPORT, @EXPORT_OK);
-
-# Define our own import method to avoid pulling in the full Exporter:
-sub import {
-    my $pkg = shift;
-    @_ = @EXPORT unless @_;
-
-    my @funcs = grep $_ ne '%Config', @_;
-    my $export_Config = @funcs < @_ ? 1 : 0;
-
-    my $callpkg = caller(0);
-    foreach my $func (@funcs) {
-	die sprintf qq{"%s" is not exported by the %s module\n},
-	    $func, __PACKAGE__ unless $Export_Cache{$func};
-	*{$callpkg.'::'.$func} = \&{$func};
-    }
-
-    *{"$callpkg\::Config"} = \%Config if $export_Config;
-    return;
-}
-
-die "Perl lib version (v5.8.4) doesn't match executable version ($])"
-    unless $^V;
-
-$^V eq v5.8.4
-    or die "Perl lib version (v5.8.4) doesn't match executable version (" .
-	sprintf("v%vd",$^V) . ")";
-
-##
-## This file was produced by running the Configure script. It holds all the
-## definitions figured out by Configure. Should you modify one of these values,
-## do not forget to propagate your changes by running "Configure -der". You may
-## instead choose to run each of the .SH files by yourself, or "Configure -S".
-##
-#
-## Package name      : perl5
-## Source directory  : .
-## Configuration time: 
-## Configured by     : perl-bugs
-## Target system     : sunos localhost 5.11 i86pc i386 i86pc
-#
-## Configure command line arguments.
-#PERL_PATCHLEVEL=
-
-our $summary : unique = <<'!END!';
-Summary of my $package (revision $revision $version_patchlevel_string) configuration:
-  Platform:
-    osname=$osname, osvers=$osvers, archname=$archname
-    uname='$myuname'
-    config_args='$config_args'
-    hint=$hint, useposix=$useposix, d_sigaction=$d_sigaction
-    usethreads=$usethreads use5005threads=$use5005threads useithreads=$useithreads usemultiplicity=$usemultiplicity
-    useperlio=$useperlio d_sfio=$d_sfio uselargefiles=$uselargefiles usesocks=$usesocks
-    use64bitint=$use64bitint use64bitall=$use64bitall uselongdouble=$uselongdouble
-    usemymalloc=$usemymalloc, bincompat5005=undef
-  Compiler:
-    cc='$cc', ccflags ='$ccflags',
-    optimize='$optimize',
-    cppflags='$cppflags'
-    ccversion='$ccversion', gccversion='$gccversion', gccosandvers='$gccosandvers'
-    intsize=$intsize, longsize=$longsize, ptrsize=$ptrsize, doublesize=$doublesize, byteorder=$byteorder
-    d_longlong=$d_longlong, longlongsize=$longlongsize, d_longdbl=$d_longdbl, longdblsize=$longdblsize
-    ivtype='$ivtype', ivsize=$ivsize, nvtype='$nvtype', nvsize=$nvsize, Off_t='$lseektype', lseeksize=$lseeksize
-    alignbytes=$alignbytes, prototype=$prototype
-  Linker and Libraries:
-    ld='$ld', ldflags ='$ldflags'
-    libpth=$libpth
-    libs=$libs
-    perllibs=$perllibs
-    libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
-    gnulibc_version='$gnulibc_version'
-  Dynamic Linking:
-    dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
-    cccdlflags='$cccdlflags', lddlflags='$lddlflags'
-
-!END!
-my $summary_expanded;
-
-sub myconfig {
-    return $summary_expanded if $summary_expanded;
-    ($summary_expanded = $summary) =~ s{\$(\w+)}
-		 { my $c = $Config{$1}; defined($c) ? $c : 'undef' }ge;
-    $summary_expanded;
-}
-
-our $Config_SH : unique = <<'!END!';
-archlibexp='/usr/perl5/5.8.4/lib/i86pc-solaris-64int'
-archname='i86pc-solaris-64int'
-cc='gcc'
-ccflags='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TS_ERRNO'
-cppflags=''
-dlsrc='dl_dlopen.xs'
-dynamic_ext='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re'
-installarchlib='/usr/perl5/5.8.4/lib/i86pc-solaris-64int'
-installprivlib='/usr/perl5/5.8.4/lib'
-libpth='/lib /usr/lib /usr/ccs/lib'
-libs='-lsocket -lnsl -ldl -lm -lc'
-osname='solaris'
-osvers='2.11'
-prefix='/usr/perl5/5.8.4'
-privlibexp='/usr/perl5/5.8.4/lib'
-sharpbang='#!'
-shsharp='true'
-so='so'
-startsh='#!/bin/sh'
-static_ext=''
-Author=''
-CONFIG='true'
-Date='$Date'
-Header=''
-Id='$Id'
-Locker=''
-Log='$Log'
-Mcc='Mcc'
-PATCHLEVEL='8'
-PERL_API_REVISION='5'
-PERL_API_SUBVERSION='0'
-PERL_API_VERSION='8'
-PERL_CONFIG_SH='true'
-PERL_REVISION='5'
-PERL_SUBVERSION='4'
-PERL_VERSION='8'
-RCSfile='$RCSfile'
-Revision='$Revision'
-SUBVERSION='4'
-Source=''
-State=''
-_a='.a'
-_exe=''
-_o='.o'
-afs='false'
-afsroot='/afs'
-alignbytes='4'
-ansi2knr=''
-aphostname='/usr/bin/hostname'
-api_revision='5'
-api_subversion='0'
-api_version='8'
-api_versionstring='5.8.0'
-ar='ar'
-archlib='/usr/perl5/5.8.4/lib/i86pc-solaris-64int'
-archname64='64int'
-archobjs=''
-asctime_r_proto='0'
-awk='awk'
-baserev='5.0'
-bash=''
-bin='/usr/perl5/5.8.4/bin'
-binexp='/usr/perl5/5.8.4/bin'
-bison='bison'
-byacc='byacc'
-byteorder='12345678'
-c='\c'
-castflags='0'
-cat='cat'
-cccdlflags='-fPIC'
-ccdlflags='-R /usr/perl5/5.8.4/lib/i86pc-solaris-64int/CORE'
-ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
-ccname='gcc'
-ccsymbols='__i386=1 __i386__=1 __sun=1 __sun__=1 __SVR4=1 __svr4__=1 __unix=1 __unix__=1 cpu=i386 machine=i386 system=svr4'
-ccversion='GNU gcc'
-cf_by='perl-bugs'
-cf_email='perl-bugs@sun.com'
-cf_time=''
-charsize='1'
-chgrp=''
-chmod='chmod'
-chown=''
-clocktype='clock_t'
-comm='comm'
-compress=''
-config_arg0='./Configure'
-config_argc='0'
-config_args=''
-contains='grep'
-cp='cp'
-cpio=''
-cpp='cpp'
-cpp_stuff='42'
-cppccsymbols='i386=1 sun=1 unix=1'
-cpplast='-'
-cppminus='-'
-cpprun='gcc -E'
-cppstdin='gcc -E'
-cppsymbols='_FILE_OFFSET_BITS=64 __i386=1 __i386__=1 _ILP32=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 _LITTLE_ENDIAN=1 __STDC__=1 __sun=1 __sun__=1 __SVR4=1 __svr4__=1 __unix=1 __unix__=1'
-crypt_r_proto='0'
-cryptlib=''
-csh='csh'
-ctermid_r_proto='0'
-ctime_r_proto='0'
-d_Gconvert='gconvert((x),(n),(t),(b))'
-d_PRIEUldbl='define'
-d_PRIFUldbl='define'
-d_PRIGUldbl='define'
-d_PRIXU64='define'
-d_PRId64='define'
-d_PRIeldbl='define'
-d_PRIfldbl='define'
-d_PRIgldbl='define'
-d_PRIi64='define'
-d_PRIo64='define'
-d_PRIu64='define'
-d_PRIx64='define'
-d_SCNfldbl='define'
-d__fwalk='undef'
-d_access='define'
-d_accessx='undef'
-d_aintl='undef'
-d_alarm='define'
-d_archlib='define'
-d_asctime_r='undef'
-d_atolf='undef'
-d_atoll='define'
-d_attribut='define'
-d_bcmp='define'
-d_bcopy='define'
-d_bsd='undef'
-d_bsdgetpgrp='undef'
-d_bsdsetpgrp='undef'
-d_bzero='define'
-d_casti32='undef'
-d_castneg='define'
-d_charvspr='undef'
-d_chown='define'
-d_chroot='define'
-d_chsize='undef'
-d_class='undef'
-d_closedir='define'
-d_cmsghdr_s='define'
-d_const='define'
-d_copysignl='define'
-d_crypt='define'
-d_crypt_r='undef'
-d_csh='define'
-d_ctermid_r='undef'
-d_ctime_r='undef'
-d_cuserid='define'
-d_dbl_dig='define'
-d_dbminitproto='undef'
-d_difftime='define'
-d_dirfd='undef'
-d_dirnamlen='undef'
-d_dlerror='define'
-d_dlopen='define'
-d_dlsymun='undef'
-d_dosuid='undef'
-d_drand48_r='undef'
-d_drand48proto='define'
-d_dup2='define'
-d_eaccess='undef'
-d_endgrent='define'
-d_endgrent_r='undef'
-d_endhent='define'
-d_endhostent_r='undef'
-d_endnent='define'
-d_endnetent_r='undef'
-d_endpent='define'
-d_endprotoent_r='undef'
-d_endpwent='define'
-d_endpwent_r='undef'
-d_endsent='define'
-d_endservent_r='undef'
-d_eofnblk='define'
-d_eunice='undef'
-d_faststdio='define'
-d_fchdir='define'
-d_fchmod='define'
-d_fchown='define'
-d_fcntl='define'
-d_fcntl_can_lock='define'
-d_fd_macros='define'
-d_fd_set='define'
-d_fds_bits='define'
-d_fgetpos='define'
-d_finite='define'
-d_finitel='undef'
-d_flexfnam='define'
-d_flock='undef'
-d_flockproto='undef'
-d_fork='define'
-d_fp_class='undef'
-d_fpathconf='define'
-d_fpclass='define'
-d_fpclassify='undef'
-d_fpclassl='undef'
-d_fpos64_t='define'
-d_frexpl='define'
-d_fs_data_s='undef'
-d_fseeko='define'
-d_fsetpos='define'
-d_fstatfs='define'
-d_fstatvfs='define'
-d_fsync='define'
-d_ftello='define'
-d_ftime='undef'
-d_getcwd='define'
-d_getespwnam='undef'
-d_getfsstat='undef'
-d_getgrent='define'
-d_getgrent_r='undef'
-d_getgrgid_r='undef'
-d_getgrnam_r='undef'
-d_getgrps='define'
-d_gethbyaddr='define'
-d_gethbyname='define'
-d_gethent='define'
-d_gethname='define'
-d_gethostbyaddr_r='undef'
-d_gethostbyname_r='undef'
-d_gethostent_r='undef'
-d_gethostprotos='define'
-d_getitimer='define'
-d_getlogin='define'
-d_getlogin_r='undef'
-d_getmnt='undef'
-d_getmntent='define'
-d_getnbyaddr='define'
-d_getnbyname='define'
-d_getnent='define'
-d_getnetbyaddr_r='undef'
-d_getnetbyname_r='undef'
-d_getnetent_r='undef'
-d_getnetprotos='define'
-d_getpagsz='define'
-d_getpbyname='define'
-d_getpbynumber='define'
-d_getpent='define'
-d_getpgid='define'
-d_getpgrp2='undef'
-d_getpgrp='define'
-d_getppid='define'
-d_getprior='define'
-d_getprotobyname_r='undef'
-d_getprotobynumber_r='undef'
-d_getprotoent_r='undef'
-d_getprotoprotos='define'
-d_getprpwnam='undef'
-d_getpwent='define'
-d_getpwent_r='undef'
-d_getpwnam_r='undef'
-d_getpwuid_r='undef'
-d_getsbyname='define'
-d_getsbyport='define'
-d_getsent='define'
-d_getservbyname_r='undef'
-d_getservbyport_r='undef'
-d_getservent_r='undef'
-d_getservprotos='define'
-d_getspnam='define'
-d_getspnam_r='undef'
-d_gettimeod='define'
-d_gmtime_r='undef'
-d_gnulibc='undef'
-d_grpasswd='define'
-d_hasmntopt='define'
-d_htonl='define'
-d_ilogbl='define'
-d_index='undef'
-d_inetaton='undef'
-d_int64_t='define'
-d_isascii='define'
-d_isfinite='undef'
-d_isinf='undef'
-d_isnan='define'
-d_isnanl='define'
-d_killpg='define'
-d_lchown='define'
-d_ldbl_dig='define'
-d_link='define'
-d_localtime_r='undef'
-d_locconv='define'
-d_lockf='define'
-d_longdbl='define'
-d_longlong='define'
-d_lseekproto='define'
-d_lstat='define'
-d_madvise='define'
-d_mblen='define'
-d_mbstowcs='define'
-d_mbtowc='define'
-d_memchr='define'
-d_memcmp='define'
-d_memcpy='define'
-d_memmove='define'
-d_memset='define'
-d_mkdir='define'
-d_mkdtemp='define'
-d_mkfifo='define'
-d_mkstemp='define'
-d_mkstemps='define'
-d_mktime='define'
-d_mmap='define'
-d_modfl='define'
-d_modfl_pow32_bug='undef'
-d_modflproto='undef'
-d_mprotect='define'
-d_msg='define'
-d_msg_ctrunc='define'
-d_msg_dontroute='define'
-d_msg_oob='define'
-d_msg_peek='define'
-d_msg_proxy='undef'
-d_msgctl='define'
-d_msgget='define'
-d_msghdr_s='define'
-d_msgrcv='define'
-d_msgsnd='define'
-d_msync='define'
-d_munmap='define'
-d_mymalloc='undef'
-d_nice='define'
-d_nl_langinfo='define'
-d_nv_preserves_uv='undef'
-d_off64_t='define'
-d_old_pthread_create_joinable='undef'
-d_oldpthreads='undef'
-d_oldsock='undef'
-d_open3='define'
-d_pathconf='define'
-d_pause='define'
-d_perl_otherlibdirs='undef'
-d_phostname='undef'
-d_pipe='define'
-d_poll='define'
-d_portable='define'
-d_procselfexe='undef'
-d_pthread_atfork='define'
-d_pthread_attr_setscope='define'
-d_pthread_yield='undef'
-d_pwage='define'
-d_pwchange='undef'
-d_pwclass='undef'
-d_pwcomment='define'
-d_pwexpire='undef'
-d_pwgecos='define'
-d_pwpasswd='define'
-d_pwquota='undef'
-d_qgcvt='define'
-d_quad='define'
-d_random_r='undef'
-d_readdir64_r='undef'
-d_readdir='define'
-d_readdir_r='undef'
-d_readlink='define'
-d_readv='define'
-d_recvmsg='define'
-d_rename='define'
-d_rewinddir='define'
-d_rmdir='define'
-d_safebcpy='undef'
-d_safemcpy='undef'
-d_sanemcmp='define'
-d_sbrkproto='define'
-d_scalbnl='define'
-d_sched_yield='undef'
-d_scm_rights='define'
-d_seekdir='define'
-d_select='define'
-d_sem='define'
-d_semctl='define'
-d_semctl_semid_ds='define'
-d_semctl_semun='define'
-d_semget='define'
-d_semop='define'
-d_sendmsg='define'
-d_setegid='define'
-d_seteuid='define'
-d_setgrent='define'
-d_setgrent_r='undef'
-d_setgrps='define'
-d_sethent='define'
-d_sethostent_r='undef'
-d_setitimer='define'
-d_setlinebuf='define'
-d_setlocale='define'
-d_setlocale_r='undef'
-d_setnent='define'
-d_setnetent_r='undef'
-d_setpent='define'
-d_setpgid='define'
-d_setpgrp2='undef'
-d_setpgrp='define'
-d_setprior='define'
-d_setproctitle='undef'
-d_setprotoent_r='undef'
-d_setpwent='define'
-d_setpwent_r='undef'
-d_setregid='define'
-d_setresgid='undef'
-d_setresuid='undef'
-d_setreuid='define'
-d_setrgid='undef'
-d_setruid='undef'
-d_setsent='define'
-d_setservent_r='undef'
-d_setsid='define'
-d_setvbuf='define'
-d_sfio='undef'
-d_shm='define'
-d_shmat='define'
-d_shmatprototype='define'
-d_shmctl='define'
-d_shmdt='define'
-d_shmget='define'
-d_sigaction='define'
-d_sigprocmask='define'
-d_sigsetjmp='define'
-d_sockatmark='define'
-d_sockatmarkproto='define'
-d_socket='define'
-d_socklen_t='define'
-d_sockpair='define'
-d_socks5_init='undef'
-d_sqrtl='define'
-d_srand48_r='undef'
-d_srandom_r='undef'
-d_sresgproto='undef'
-d_sresuproto='undef'
-d_statblks='define'
-d_statfs_f_flags='undef'
-d_statfs_s='define'
-d_statvfs='define'
-d_stdio_cnt_lval='define'
-d_stdio_ptr_lval='define'
-d_stdio_ptr_lval_nochange_cnt='define'
-d_stdio_ptr_lval_sets_cnt='undef'
-d_stdio_stream_array='define'
-d_stdiobase='define'
-d_stdstdio='define'
-d_strchr='define'
-d_strcoll='define'
-d_strctcpy='define'
-d_strerrm='strerror(e)'
-d_strerror='define'
-d_strerror_r='undef'
-d_strftime='define'
-d_strtod='define'
-d_strtol='define'
-d_strtold='define'
-d_strtoll='define'
-d_strtoq='undef'
-d_strtoul='define'
-d_strtoull='define'
-d_strtouq='undef'
-d_strxfrm='define'
-d_suidsafe='define'
-d_symlink='define'
-d_syscall='define'
-d_syscallproto='undef'
-d_sysconf='define'
-d_sysernlst=''
-d_syserrlst='define'
-d_system='define'
-d_tcgetpgrp='define'
-d_tcsetpgrp='define'
-d_telldir='define'
-d_telldirproto='define'
-d_time='define'
-d_times='define'
-d_tm_tm_gmtoff='undef'
-d_tm_tm_zone='undef'
-d_tmpnam_r='undef'
-d_truncate='define'
-d_ttyname_r='undef'
-d_tzname='define'
-d_u32align='define'
-d_ualarm='define'
-d_umask='define'
-d_uname='define'
-d_union_semun='undef'
-d_unordered='define'
-d_usleep='define'
-d_usleepproto='define'
-d_ustat='define'
-d_vendorarch='define'
-d_vendorbin='define'
-d_vendorlib='define'
-d_vendorscript='define'
-d_vfork='undef'
-d_void_closedir='undef'
-d_voidsig='define'
-d_voidtty=''
-d_volatile='define'
-d_vprintf='define'
-d_wait4='define'
-d_waitpid='define'
-d_wcstombs='define'
-d_wctomb='define'
-d_writev='define'
-d_xenix='undef'
-date='date'
-db_hashtype='u_int32_t'
-db_prefixtype='size_t'
-db_version_major=''
-db_version_minor=''
-db_version_patch=''
-defvoidused='15'
-direntrytype='struct dirent'
-dlext='so'
-doublesize='8'
-drand01='drand48()'
-drand48_r_proto='0'
-eagain='EAGAIN'
-ebcdic='undef'
-echo='echo'
-egrep='egrep'
-emacs=''
-endgrent_r_proto='0'
-endhostent_r_proto='0'
-endnetent_r_proto='0'
-endprotoent_r_proto='0'
-endpwent_r_proto='0'
-endservent_r_proto='0'
-eunicefix=':'
-exe_ext=''
-expr='expr'
-extensions='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re Errno'
-extras=''
-fflushNULL='define'
-fflushall='undef'
-find=''
-firstmakefile='makefile'
-flex=''
-fpossize='8'
-fpostype='fpos_t'
-freetype='void'
-from=':'
-full_ar='/usr/ccs/bin/ar'
-full_csh='/usr/bin/csh'
-full_sed='/usr/bin/sed'
-gccansipedantic=''
-gccosandvers=''
-gccversion=''
-getgrent_r_proto='0'
-getgrgid_r_proto='0'
-getgrnam_r_proto='0'
-gethostbyaddr_r_proto='0'
-gethostbyname_r_proto='0'
-gethostent_r_proto='0'
-getlogin_r_proto='0'
-getnetbyaddr_r_proto='0'
-getnetbyname_r_proto='0'
-getnetent_r_proto='0'
-getprotobyname_r_proto='0'
-getprotobynumber_r_proto='0'
-getprotoent_r_proto='0'
-getpwent_r_proto='0'
-getpwnam_r_proto='0'
-getpwuid_r_proto='0'
-getservbyname_r_proto='0'
-getservbyport_r_proto='0'
-getservent_r_proto='0'
-getspnam_r_proto='0'
-gidformat='"ld"'
-gidsign='-1'
-gidsize='4'
-gidtype='gid_t'
-glibpth='/usr/shlib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/local/lib'
-gmake='gmake'
-gmtime_r_proto='0'
-gnulibc_version=''
-grep='grep'
-groupcat='cat /etc/group'
-groupstype='gid_t'
-gzip='gzip'
-h_fcntl='true'
-h_sysfile='false'
-hint='recommended'
-hostcat='cat /etc/hosts'
-html1dir=''
-html1direxp=''
-html3dir=''
-html3direxp=''
-i16size='2'
-i16type='short'
-i32size='4'
-i32type='long'
-i64size='8'
-i64type='long long'
-i8size='1'
-i8type='char'
-i_arpainet='define'
-i_bsdioctl=''
-i_crypt='define'
-i_db='undef'
-i_dbm='undef'
-i_dirent='define'
-i_dld='undef'
-i_dlfcn='define'
-i_fcntl='define'
-i_float='define'
-i_fp='undef'
-i_fp_class='undef'
-i_gdbm='undef'
-i_grp='define'
-i_ieeefp='define'
-i_inttypes='define'
-i_langinfo='define'
-i_libutil='undef'
-i_limits='define'
-i_locale='define'
-i_machcthr='undef'
-i_malloc='define'
-i_math='define'
-i_memory='undef'
-i_mntent='undef'
-i_ndbm='define'
-i_netdb='define'
-i_neterrno='undef'
-i_netinettcp='define'
-i_niin='define'
-i_poll='define'
-i_prot='undef'
-i_pthread='define'
-i_pwd='define'
-i_rpcsvcdbm='define'
-i_sfio='undef'
-i_sgtty='undef'
-i_shadow='define'
-i_socks='undef'
-i_stdarg='define'
-i_stddef='define'
-i_stdlib='define'
-i_string='define'
-i_sunmath='undef'
-i_sysaccess='undef'
-i_sysdir='undef'
-i_sysfile='undef'
-i_sysfilio='define'
-i_sysin='undef'
-i_sysioctl='define'
-i_syslog='define'
-i_sysmman='define'
-i_sysmode='define'
-i_sysmount='define'
-i_sysndir='undef'
-i_sysparam='define'
-i_sysresrc='define'
-i_syssecrt='undef'
-i_sysselct='define'
-i_syssockio='define'
-i_sysstat='define'
-i_sysstatfs='define'
-i_sysstatvfs='define'
-i_systime='define'
-i_systimek='undef'
-i_systimes='define'
-i_systypes='define'
-i_sysuio='define'
-i_sysun='define'
-i_sysutsname='define'
-i_sysvfs='define'
-i_syswait='define'
-i_termio='undef'
-i_termios='define'
-i_time='undef'
-i_unistd='define'
-i_ustat='define'
-i_utime='define'
-i_values='define'
-i_varargs='undef'
-i_varhdr='stdarg.h'
-i_vfork='undef'
-ignore_versioned_solibs=''
-inc_version_list=''
-inc_version_list_init='0'
-incpath=''
-inews=''
-installbin='/usr/perl5/5.8.4/bin'
-installhtml1dir=''
-installhtml3dir=''
-installman1dir='/usr/perl5/5.8.4/man/man1'
-installman3dir='/usr/perl5/5.8.4/man/man3'
-installprefix='/usr/perl5/5.8.4'
-installprefixexp='/usr/perl5/5.8.4'
-installscript='/usr/perl5/5.8.4/bin'
-installsitearch='/usr/perl5/site_perl/5.8.4/i86pc-solaris-64int'
-installsitebin='/usr/perl5/5.8.4/bin'
-installsitehtml1dir=''
-installsitehtml3dir=''
-installsitelib='/usr/perl5/site_perl/5.8.4'
-installsiteman1dir='/usr/perl5/5.8.4/man/man1'
-installsiteman3dir='/usr/perl5/5.8.4/man/man3'
-installsitescript='/usr/perl5/5.8.4/bin'
-installstyle='lib'
-installusrbinperl='undef'
-installvendorarch='/usr/perl5/vendor_perl/5.8.4/i86pc-solaris-64int'
-installvendorbin='/usr/perl5/5.8.4/bin'
-installvendorhtml1dir=''
-installvendorhtml3dir=''
-installvendorlib='/usr/perl5/vendor_perl/5.8.4'
-installvendorman1dir='/usr/perl5/5.8.4/man/man1'
-installvendorman3dir='/usr/perl5/5.8.4/man/man3'
-installvendorscript='/usr/perl5/5.8.4/bin'
-intsize='4'
-issymlink='test -h'
-ivdformat='"lld"'
-ivsize='8'
-ivtype='long long'
-known_extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re'
-ksh=''
-ld='gcc'
-lddlflags='-G'
-ldflags=''
-ldflags_uselargefiles=''
-ldlibpthname='LD_LIBRARY_PATH'
-less='less'
-lib_ext='.a'
-libc='/lib/libc.so'
-libperl='libperl.so'
-libsdirs='/usr/lib'
-libsfiles='libsocket.so.1 libnsl.so.1 libdl.so.1 libm.so.2 libc.so.1'
-libsfound='/usr/lib/libsocket.so.1 /usr/lib/libnsl.so.1 /usr/lib/libdl.so.1 /usr/lib/libm.so.2 /usr/lib/libc.so.1'
-libspath='/lib /usr/lib /usr/ccs/lib'
-libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db dl dld sun m util c cposix posix bsd BSD'
-libswanted_uselargefiles=''
-line=''
-lint=''
-lkflags=''
-ln='ln'
-lns='/usr/bin/ln -s'
-localtime_r_proto='0'
-locincpth='/usr/sfw/include /opt/sfw/include /usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
-loclibpth='/usr/sfw/lib /opt/sfw/lib /usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
-longdblsize='12'
-longlongsize='8'
-longsize='4'
-lp=''
-lpr=''
-ls='ls'
-lseeksize='8'
-lseektype='off_t'
-mail=''
-mailx=''
-make='make'
-make_set_make='#'
-mallocobj=''
-mallocsrc=''
-malloctype='void *'
-man1dir='/usr/perl5/5.8.4/man/man1'
-man1direxp='/usr/perl5/5.8.4/man/man1'
-man1ext='1'
-man3dir='/usr/perl5/5.8.4/man/man3'
-man3direxp='/usr/perl5/5.8.4/man/man3'
-man3ext='3'
-mips_type=''
-mistrustnm='run'
-mkdir='mkdir'
-mmaptype='caddr_t'
-modetype='mode_t'
-more='more'
-multiarch='undef'
-mv=''
-myarchname='i86pc-solaris'
-mydomain='.sun.com'
-myhostname='localhost'
-myuname='sunos localhost 5.11 i86pc i386 i86pc'
-n=''
-need_va_copy='undef'
-netdb_hlen_type='size_t'
-netdb_host_type='const void *'
-netdb_name_type='const char *'
-netdb_net_type='in_addr_t'
-nm='nm'
-nm_opt='-p'
-nm_so_opt=''
-nonxs_ext='Errno'
-nroff='nroff'
-nvEUformat='"E"'
-nvFUformat='"F"'
-nvGUformat='"G"'
-nv_preserves_uv_bits='53'
-nveformat='"e"'
-nvfformat='"f"'
-nvgformat='"g"'
-nvsize='8'
-nvtype='double'
-o_nonblock='O_NONBLOCK'
-obj_ext='.o'
-old_pthread_create_joinable=''
-optimize='-O2 -fno-strict-aliasing'
-orderlib='false'
-otherlibdirs=''
-package='perl5'
-pager='/usr/bin/more'
-passcat='cat /etc/passwd'
-patchlevel='8'
-path_sep=':'
-perl5='/bin/perl'
-perl=''
-perl_patchlevel=''
-perladmin='perl-bugs@sun.com'
-perllibs='-lsocket -lnsl -ldl -lm -lc'
-perlpath='/usr/perl5/5.8.4/bin/perl'
-pg='pg'
-phostname='hostname'
-pidtype='pid_t'
-plibpth=''
-pmake=''
-pr=''
-prefixexp='/usr/perl5/5.8.4'
-privlib='/usr/perl5/5.8.4/lib'
-procselfexe=''
-prototype='define'
-ptrsize='4'
-quadkind='3'
-quadtype='long long'
-randbits='48'
-randfunc='drand48'
-random_r_proto='0'
-randseedtype='long'
-ranlib=':'
-rd_nodata='-1'
-readdir64_r_proto='0'
-readdir_r_proto='0'
-revision='5'
-rm='rm'
-rmail=''
-run=''
-runnm='true'
-sPRIEUldbl='"LE"'
-sPRIFUldbl='"LF"'
-sPRIGUldbl='"LG"'
-sPRIXU64='"llX"'
-sPRId64='"lld"'
-sPRIeldbl='"Le"'
-sPRIfldbl='"Lf"'
-sPRIgldbl='"Lg"'
-sPRIi64='"lli"'
-sPRIo64='"llo"'
-sPRIu64='"llu"'
-sPRIx64='"llx"'
-sSCNfldbl='"Lf"'
-sched_yield='undef'
-scriptdir='/usr/perl5/5.8.4/bin'
-scriptdirexp='/usr/perl5/5.8.4/bin'
-sed='sed'
-seedfunc='srand48'
-selectminbits='32'
-selecttype='fd_set *'
-sendmail=''
-setgrent_r_proto='0'
-sethostent_r_proto='0'
-setlocale_r_proto='0'
-setnetent_r_proto='0'
-setprotoent_r_proto='0'
-setpwent_r_proto='0'
-setservent_r_proto='0'
-sh='/bin/sh'
-shar=''
-shmattype='void *'
-shortsize='2'
-shrpenv=''
-sig_count='49'
-sig_name='ZERO HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM USR1 USR2 CHLD PWR WINCH URG IO STOP TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ WAITING LWP FREEZE THAW CANCEL LOST XRES JVM1 JVM2 RTMIN NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 RTMAX IOT CLD POLL'
-sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "EMT", "FPE", "KILL", "BUS", "SEGV", "SYS", "PIPE", "ALRM", "TERM", "USR1", "USR2", "CHLD", "PWR", "WINCH", "URG", "IO", "STOP", "TSTP", "CONT", "TTIN", "TTOU", "VTALRM", "PROF", "XCPU", "XFSZ", "WAITING", "LWP", "FREEZE", "THAW", "CANCEL", "LOST", "XRES", "JVM1", "JVM2", "RTMIN", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "RTMAX", "IOT", "CLD", "POLL", 0'
-sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 6 18 22'
-sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 6, 18, 22, 0'
-sig_size='52'
-signal_t='void'
-sitearch='/usr/perl5/site_perl/5.8.4/i86pc-solaris-64int'
-sitearchexp='/usr/perl5/site_perl/5.8.4/i86pc-solaris-64int'
-sitebin='/usr/perl5/5.8.4/bin'
-sitebinexp='/usr/perl5/5.8.4/bin'
-sitehtml1dir=''
-sitehtml1direxp=''
-sitehtml3dir=''
-sitehtml3direxp=''
-sitelib='/usr/perl5/site_perl/5.8.4'
-sitelib_stem='/usr/perl5/site_perl'
-sitelibexp='/usr/perl5/site_perl/5.8.4'
-siteman1dir='/usr/perl5/5.8.4/man/man1'
-siteman1direxp='/usr/perl5/5.8.4/man/man1'
-siteman3dir='/usr/perl5/5.8.4/man/man3'
-siteman3direxp='/usr/perl5/5.8.4/man/man3'
-siteprefix='/usr/perl5/5.8.4'
-siteprefixexp='/usr/perl5/5.8.4'
-sitescript='/usr/perl5/5.8.4/bin'
-sitescriptexp='/usr/perl5/5.8.4/bin'
-sizesize='4'
-sizetype='size_t'
-sleep=''
-smail=''
-sockethdr=''
-socketlib=''
-socksizetype='int'
-sort='sort'
-spackage='Perl5'
-spitshell='cat'
-srand48_r_proto='0'
-srandom_r_proto='0'
-src='.'
-ssizetype='ssize_t'
-startperl='#!/usr/perl5/5.8.4/bin/perl'
-stdchar='unsigned char'
-stdio_base='((fp)->_base)'
-stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)'
-stdio_cnt='((fp)->_cnt)'
-stdio_filbuf=''
-stdio_ptr='((fp)->_ptr)'
-stdio_stream_array='__iob'
-strerror_r_proto='0'
-strings='/usr/include/string.h'
-submit=''
-subversion='4'
-sysman='/usr/share/man/man1'
-tail=''
-tar=''
-targetarch=''
-tbl=''
-tee=''
-test='test'
-timeincl='/usr/include/sys/time.h'
-timetype='time_t'
-tmpnam_r_proto='0'
-to=':'
-touch='touch'
-tr='tr'
-trnl='\n'
-troff=''
-ttyname_r_proto='0'
-u16size='2'
-u16type='unsigned short'
-u32size='4'
-u32type='unsigned long'
-u64size='8'
-u64type='unsigned long long'
-u8size='1'
-u8type='unsigned char'
-uidformat='"ld"'
-uidsign='-1'
-uidsize='4'
-uidtype='uid_t'
-uname='uname'
-uniq='uniq'
-uquadtype='unsigned long long'
-use5005threads='undef'
-use64bitall='undef'
-use64bitint='define'
-usecrosscompile='undef'
-usedl='define'
-usefaststdio='define'
-useithreads='undef'
-uselargefiles='define'
-uselongdouble='undef'
-usemallocwrap='define'
-usemorebits='undef'
-usemultiplicity='undef'
-usemymalloc='n'
-usenm='true'
-useopcode='true'
-useperlio='define'
-useposix='true'
-usereentrant='undef'
-usesfio='false'
-useshrplib='true'
-usesocks='undef'
-usethreads='undef'
-usevendorprefix='define'
-usevfork='false'
-usrinc='/usr/include'
-uuname=''
-uvXUformat='"llX"'
-uvoformat='"llo"'
-uvsize='8'
-uvtype='unsigned long long'
-uvuformat='"llu"'
-uvxformat='"llx"'
-vendorarch='/usr/perl5/vendor_perl/5.8.4/i86pc-solaris-64int'
-vendorarchexp='/usr/perl5/vendor_perl/5.8.4/i86pc-solaris-64int'
-vendorbin='/usr/perl5/5.8.4/bin'
-vendorbinexp='/usr/perl5/5.8.4/bin'
-vendorhtml1dir=''
-vendorhtml1direxp=''
-vendorhtml3dir=''
-vendorhtml3direxp=''
-vendorlib='/usr/perl5/vendor_perl/5.8.4'
-vendorlib_stem='/usr/perl5/vendor_perl'
-vendorlibexp='/usr/perl5/vendor_perl/5.8.4'
-vendorman1dir='/usr/perl5/5.8.4/man/man1'
-vendorman1direxp='/usr/perl5/5.8.4/man/man1'
-vendorman3dir='/usr/perl5/5.8.4/man/man3'
-vendorman3direxp='/usr/perl5/5.8.4/man/man3'
-vendorprefix='/usr/perl5/5.8.4'
-vendorprefixexp='/usr/perl5/5.8.4'
-vendorscript='/usr/perl5/5.8.4/bin'
-vendorscriptexp='/usr/perl5/5.8.4/bin'
-version='5.8.4'
-version_patchlevel_string='version 8 subversion 4'
-versiononly='undef'
-vi=''
-voidflags='15'
-xlibpth='/usr/lib/386 /lib/386'
-yacc='yacc'
-yaccflags=''
-zcat=''
-zip='zip'
-!END!
-
-# Search for it in the big string 
-sub fetch_string {
-    my($self, $key) = @_;
-
-    my $quote_type = "'";
-    my $marker = "$key=";
-
-    # Check for the common case, ' delimited
-    my $start = index($Config_SH, "\n$marker$quote_type");
-    # If that failed, check for " delimited
-    if ($start == -1) {
-        $quote_type = '"';
-        $start = index($Config_SH, "\n$marker$quote_type");
-    }
-    return undef if ( ($start == -1) &&  # in case it's first 
-                      (substr($Config_SH, 0, length($marker)) ne $marker) );
-    if ($start == -1) { 
-        # It's the very first thing we found. Skip $start forward
-        # and figure out the quote mark after the =.
-        $start = length($marker) + 1;
-        $quote_type = substr($Config_SH, $start - 1, 1);
-    } 
-    else { 
-        $start += length($marker) + 2;
-    }
-
-    my $value = substr($Config_SH, $start, 
-                       index($Config_SH, "$quote_type\n", $start) - $start);
-
-    # If we had a double-quote, we'd better eval it so escape
-    # sequences and such can be interpolated. Since the incoming
-    # value is supposed to follow shell rules and not perl rules,
-    # we escape any perl variable markers
-    if ($quote_type eq '"') {
-	$value =~ s/\$/\\\$/g;
-	$value =~ s/\@/\\\@/g;
-	eval "\$value = \"$value\"";
-    }
-
-    # So we can say "if $Config{'foo'}".
-    $value = undef if $value eq 'undef';
-    $self->{$key} = $value; # cache it
-}
-
-sub fetch_virtual {
-    my($self, $key) = @_;
-
-    my $value;
-
-    if ($key =~ /^((?:cc|ld)flags|libs(?:wanted)?)_nolargefiles/) {
-	# These are purely virtual, they do not exist, but need to
-	# be computed on demand for largefile-incapable extensions.
-	my $new_key = "${1}_uselargefiles";
-	$value = $Config{$1};
-	my $withlargefiles = $Config{$new_key};
-	if ($new_key =~ /^(?:cc|ld)flags_/) {
-	    $value =~ s/\Q$withlargefiles\E\b//;
-	} elsif ($new_key =~ /^libs/) {
-	    my @lflibswanted = split(' ', $Config{libswanted_uselargefiles});
-	    if (@lflibswanted) {
-		my %lflibswanted;
-		@lflibswanted{@lflibswanted} = ();
-		if ($new_key =~ /^libs_/) {
-		    my @libs = grep { /^-l(.+)/ &&
-                                      not exists $lflibswanted{$1} }
-		                    split(' ', $Config{libs});
-		    $Config{libs} = join(' ', @libs);
-		} elsif ($new_key =~ /^libswanted_/) {
-		    my @libswanted = grep { not exists $lflibswanted{$_} }
-		                          split(' ', $Config{libswanted});
-		    $Config{libswanted} = join(' ', @libswanted);
-		}
-	    }
-	}
-    }
-
-    $self->{$key} = $value;
-}
-
-sub FETCH { 
-    my($self, $key) = @_;
-
-    # check for cached value (which may be undef so we use exists not defined)
-    return $self->{$key} if exists $self->{$key};
-
-    $self->fetch_string($key);
-    return $self->{$key} if exists $self->{$key};
-    $self->fetch_virtual($key);
-
-    # Might not exist, in which undef is correct.
-    return $self->{$key};
-}
- 
-my $prevpos = 0;
-
-sub FIRSTKEY {
-    $prevpos = 0;
-    substr($Config_SH, 0, index($Config_SH, '=') );
-}
-
-sub NEXTKEY {
-    # Find out how the current key's quoted so we can skip to its end.
-    my $quote = substr($Config_SH, index($Config_SH, "=", $prevpos)+1, 1);
-    my $pos = index($Config_SH, qq($quote\n), $prevpos) + 2;
-    my $len = index($Config_SH, "=", $pos) - $pos;
-    $prevpos = $pos;
-    $len > 0 ? substr($Config_SH, $pos, $len) : undef;
-}
-
-sub EXISTS { 
-    return 1 if exists($_[0]->{$_[1]});
-
-    return(index($Config_SH, "\n$_[1]='") != -1 or
-           substr($Config_SH, 0, length($_[1])+2) eq "$_[1]='" or
-           index($Config_SH, "\n$_[1]=\"") != -1 or
-           substr($Config_SH, 0, length($_[1])+2) eq "$_[1]=\"" or
-           $_[1] =~ /^(?:(?:cc|ld)flags|libs(?:wanted)?)_nolargefiles$/
-          );
-}
-
-sub STORE  { die "\%Config::Config is read-only\n" }
-*DELETE = \&STORE;
-*CLEAR  = \&STORE;
-
-
-sub config_sh {
-    $Config_SH
-}
-
-sub config_re {
-    my $re = shift;
-    return map { chomp; $_ } grep /^$re=/, split /^/, $Config_SH;
-}
-
-sub config_vars {
-    foreach (@_) {
-	if (/\W/) {
-	    my @matches = config_re($_);
-	    print map "$_\n", @matches ? @matches : "$_: not found";
-	} else {
-	    my $v = (exists $Config{$_}) ? $Config{$_} : 'UNKNOWN';
-	    $v = 'undef' unless defined $v;
-	    print "$_='$v';\n";
-	}
-    }
-}
-
-sub TIEHASH {
-    bless $_[1], $_[0];
-}
-
-# avoid Config..Exporter..UNIVERSAL search for DESTROY then AUTOLOAD
-sub DESTROY { }
-
-my $i = 0;
-foreach my $c (8,7,6,5,4,3,2) { $i |= ord($c); $i <<= 8 }
-$i |= ord(1);
-my $value = join('', unpack('aaaaaaaa', pack('Q', $i)));
-
-
-tie %Config, 'Config', {
-    'archlibexp' => '/usr/perl5/5.8.4/lib/i86pc-solaris-64int',
-    'archname' => 'i86pc-solaris-64int',
-    'cc' => 'gcc',
-    'ccflags' => '-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TS_ERRNO',
-    'cppflags' => '',
-    'dlsrc' => 'dl_dlopen.xs',
-    'dynamic_ext' => 'B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re',
-    'installarchlib' => '/usr/perl5/5.8.4/lib/i86pc-solaris-64int',
-    'installprivlib' => '/usr/perl5/5.8.4/lib',
-    'libpth' => '/lib /usr/lib /usr/ccs/lib',
-    'libs' => '-lsocket -lnsl -ldl -lm -lc',
-    'osname' => 'solaris',
-    'osvers' => '2.11',
-    'prefix' => '/usr/perl5/5.8.4',
-    'privlibexp' => '/usr/perl5/5.8.4/lib',
-    'sharpbang' => '#!',
-    'shsharp' => 'true',
-    'so' => 'so',
-    'startsh' => '#!/bin/sh',
-    'static_ext' => '',
-    byteorder => $value,
-
-};
-
-1;
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/PerlGcc/config/5.8.4/5.11/sparc/Config.pm	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,1292 +0,0 @@
-# This file was created by configpm when Perl was built. Any changes
-# made to this file will be lost the next time perl is built.
-
-package Config;
-@EXPORT = qw(%Config);
-@EXPORT_OK = qw(myconfig config_sh config_vars config_re);
-
-my %Export_Cache = map {($_ => 1)} (@EXPORT, @EXPORT_OK);
-
-# Define our own import method to avoid pulling in the full Exporter:
-sub import {
-    my $pkg = shift;
-    @_ = @EXPORT unless @_;
-
-    my @funcs = grep $_ ne '%Config', @_;
-    my $export_Config = @funcs < @_ ? 1 : 0;
-
-    my $callpkg = caller(0);
-    foreach my $func (@funcs) {
-	die sprintf qq{"%s" is not exported by the %s module\n},
-	    $func, __PACKAGE__ unless $Export_Cache{$func};
-	*{$callpkg.'::'.$func} = \&{$func};
-    }
-
-    *{"$callpkg\::Config"} = \%Config if $export_Config;
-    return;
-}
-
-die "Perl lib version (v5.8.4) doesn't match executable version ($])"
-    unless $^V;
-
-$^V eq v5.8.4
-    or die "Perl lib version (v5.8.4) doesn't match executable version (" .
-	sprintf("v%vd",$^V) . ")";
-
-##
-## This file was produced by running the Configure script. It holds all the
-## definitions figured out by Configure. Should you modify one of these values,
-## do not forget to propagate your changes by running "Configure -der". You may
-## instead choose to run each of the .SH files by yourself, or "Configure -S".
-##
-#
-## Package name      : perl5
-## Source directory  : .
-## Configuration time: 
-## Configured by     : perl-bugs
-## Target system     : sunos localhost 5.11 sun4u sparc SUNW,Ultra-2
-#
-## Configure command line arguments.
-#PERL_PATCHLEVEL=
-
-our $summary : unique = <<'!END!';
-Summary of my $package (revision $revision $version_patchlevel_string) configuration:
-  Platform:
-    osname=$osname, osvers=$osvers, archname=$archname
-    uname='$myuname'
-    config_args='$config_args'
-    hint=$hint, useposix=$useposix, d_sigaction=$d_sigaction
-    usethreads=$usethreads use5005threads=$use5005threads useithreads=$useithreads usemultiplicity=$usemultiplicity
-    useperlio=$useperlio d_sfio=$d_sfio uselargefiles=$uselargefiles usesocks=$usesocks
-    use64bitint=$use64bitint use64bitall=$use64bitall uselongdouble=$uselongdouble
-    usemymalloc=$usemymalloc, bincompat5005=undef
-  Compiler:
-    cc='$cc', ccflags ='$ccflags',
-    optimize='$optimize',
-    cppflags='$cppflags'
-    ccversion='$ccversion', gccversion='$gccversion', gccosandvers='$gccosandvers'
-    intsize=$intsize, longsize=$longsize, ptrsize=$ptrsize, doublesize=$doublesize, byteorder=$byteorder
-    d_longlong=$d_longlong, longlongsize=$longlongsize, d_longdbl=$d_longdbl, longdblsize=$longdblsize
-    ivtype='$ivtype', ivsize=$ivsize, nvtype='$nvtype', nvsize=$nvsize, Off_t='$lseektype', lseeksize=$lseeksize
-    alignbytes=$alignbytes, prototype=$prototype
-  Linker and Libraries:
-    ld='$ld', ldflags ='$ldflags'
-    libpth=$libpth
-    libs=$libs
-    perllibs=$perllibs
-    libc=$libc, so=$so, useshrplib=$useshrplib, libperl=$libperl
-    gnulibc_version='$gnulibc_version'
-  Dynamic Linking:
-    dlsrc=$dlsrc, dlext=$dlext, d_dlsymun=$d_dlsymun, ccdlflags='$ccdlflags'
-    cccdlflags='$cccdlflags', lddlflags='$lddlflags'
-
-!END!
-my $summary_expanded;
-
-sub myconfig {
-    return $summary_expanded if $summary_expanded;
-    ($summary_expanded = $summary) =~ s{\$(\w+)}
-		 { my $c = $Config{$1}; defined($c) ? $c : 'undef' }ge;
-    $summary_expanded;
-}
-
-our $Config_SH : unique = <<'!END!';
-archlibexp='/usr/perl5/5.8.4/lib/sun4-solaris-64int'
-archname='sun4-solaris-64int'
-cc='gcc'
-ccflags='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TS_ERRNO'
-cppflags=''
-dlsrc='dl_dlopen.xs'
-dynamic_ext='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re'
-installarchlib='/usr/perl5/5.8.4/lib/sun4-solaris-64int'
-installprivlib='/usr/perl5/5.8.4/lib'
-libpth='/lib /usr/lib /usr/ccs/lib'
-libs='-lsocket -lnsl -ldl -lm -lc'
-osname='solaris'
-osvers='2.11'
-prefix='/usr/perl5/5.8.4'
-privlibexp='/usr/perl5/5.8.4/lib'
-sharpbang='#!'
-shsharp='true'
-so='so'
-startsh='#!/bin/sh'
-static_ext=''
-Author=''
-CONFIG='true'
-Date='$Date'
-Header=''
-Id='$Id'
-Locker=''
-Log='$Log'
-Mcc='Mcc'
-PATCHLEVEL='8'
-PERL_API_REVISION='5'
-PERL_API_SUBVERSION='0'
-PERL_API_VERSION='8'
-PERL_CONFIG_SH='true'
-PERL_REVISION='5'
-PERL_SUBVERSION='4'
-PERL_VERSION='8'
-RCSfile='$RCSfile'
-Revision='$Revision'
-SUBVERSION='4'
-Source=''
-State=''
-_a='.a'
-_exe=''
-_o='.o'
-afs='false'
-afsroot='/afs'
-alignbytes='8'
-ansi2knr=''
-aphostname='/usr/bin/hostname'
-api_revision='5'
-api_subversion='0'
-api_version='8'
-api_versionstring='5.8.0'
-ar='ar'
-archlib='/usr/perl5/5.8.4/lib/sun4-solaris-64int'
-archname64='64int'
-archobjs=''
-asctime_r_proto='0'
-awk='awk'
-baserev='5.0'
-bash=''
-bin='/usr/perl5/5.8.4/bin'
-binexp='/usr/perl5/5.8.4/bin'
-bison='bison'
-byacc='byacc'
-byteorder='87654321'
-c='\c'
-castflags='0'
-cat='cat'
-cccdlflags='-fPIC'
-ccdlflags='-R /usr/perl5/5.8.4/lib/sun4-solaris-64int/CORE'
-ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
-ccname='gcc'
-ccsymbols='__GCC_NEW_VARARGS__=1 __sparc=1 __sparc__=1 __sun=1 __sun__=1 __SVR4=1 __svr4__=1 __unix=1 __unix__=1 cpu=sparc machine=sparc system=svr4 system=unix'
-ccversion='GNU gcc'
-cf_by='perl-bugs'
-cf_email='perl-bugs@sun.com'
-cf_time=''
-charsize='1'
-chgrp=''
-chmod='chmod'
-chown=''
-clocktype='clock_t'
-comm='comm'
-compress=''
-config_arg0='./Configure'
-config_argc='0'
-config_args=''
-contains='grep'
-cp='cp'
-cpio=''
-cpp='cpp'
-cpp_stuff='42'
-cppccsymbols='sparc=1 sun=1 unix=1'
-cpplast='-'
-cppminus='-'
-cpprun='gcc -E'
-cppstdin='gcc -E'
-cppsymbols='_BIG_ENDIAN=1 _FILE_OFFSET_BITS=64 __GCC_NEW_VARARGS__=1 _ILP32=1 _LARGEFILE64_SOURCE=1 _LARGEFILE_SOURCE=1 __sparc=1 __sparc__=1 __STDC__=1 __sun=1 __sun__=1 __SVR4=1 __svr4__=1 __unix=1 __unix__=1'
-crypt_r_proto='0'
-cryptlib=''
-csh='csh'
-ctermid_r_proto='0'
-ctime_r_proto='0'
-d_Gconvert='gconvert((x),(n),(t),(b))'
-d_PRIEUldbl='define'
-d_PRIFUldbl='define'
-d_PRIGUldbl='define'
-d_PRIXU64='define'
-d_PRId64='define'
-d_PRIeldbl='define'
-d_PRIfldbl='define'
-d_PRIgldbl='define'
-d_PRIi64='define'
-d_PRIo64='define'
-d_PRIu64='define'
-d_PRIx64='define'
-d_SCNfldbl='define'
-d__fwalk='undef'
-d_access='define'
-d_accessx='undef'
-d_aintl='undef'
-d_alarm='define'
-d_archlib='define'
-d_asctime_r='undef'
-d_atolf='undef'
-d_atoll='define'
-d_attribut='define'
-d_bcmp='define'
-d_bcopy='define'
-d_bsd='undef'
-d_bsdgetpgrp='undef'
-d_bsdsetpgrp='undef'
-d_bzero='define'
-d_casti32='define'
-d_castneg='define'
-d_charvspr='undef'
-d_chown='define'
-d_chroot='define'
-d_chsize='undef'
-d_class='undef'
-d_closedir='define'
-d_cmsghdr_s='define'
-d_const='define'
-d_copysignl='define'
-d_crypt='define'
-d_crypt_r='undef'
-d_csh='define'
-d_ctermid_r='undef'
-d_ctime_r='undef'
-d_cuserid='define'
-d_dbl_dig='define'
-d_dbminitproto='undef'
-d_difftime='define'
-d_dirfd='undef'
-d_dirnamlen='undef'
-d_dlerror='define'
-d_dlopen='define'
-d_dlsymun='undef'
-d_dosuid='undef'
-d_drand48_r='undef'
-d_drand48proto='define'
-d_dup2='define'
-d_eaccess='undef'
-d_endgrent='define'
-d_endgrent_r='undef'
-d_endhent='define'
-d_endhostent_r='undef'
-d_endnent='define'
-d_endnetent_r='undef'
-d_endpent='define'
-d_endprotoent_r='undef'
-d_endpwent='define'
-d_endpwent_r='undef'
-d_endsent='define'
-d_endservent_r='undef'
-d_eofnblk='define'
-d_eunice='undef'
-d_faststdio='define'
-d_fchdir='define'
-d_fchmod='define'
-d_fchown='define'
-d_fcntl='define'
-d_fcntl_can_lock='define'
-d_fd_macros='define'
-d_fd_set='define'
-d_fds_bits='define'
-d_fgetpos='define'
-d_finite='define'
-d_finitel='undef'
-d_flexfnam='define'
-d_flock='undef'
-d_flockproto='undef'
-d_fork='define'
-d_fp_class='undef'
-d_fpathconf='define'
-d_fpclass='define'
-d_fpclassify='undef'
-d_fpclassl='undef'
-d_fpos64_t='define'
-d_frexpl='define'
-d_fs_data_s='undef'
-d_fseeko='define'
-d_fsetpos='define'
-d_fstatfs='define'
-d_fstatvfs='define'
-d_fsync='define'
-d_ftello='define'
-d_ftime='undef'
-d_getcwd='define'
-d_getespwnam='undef'
-d_getfsstat='undef'
-d_getgrent='define'
-d_getgrent_r='undef'
-d_getgrgid_r='undef'
-d_getgrnam_r='undef'
-d_getgrps='define'
-d_gethbyaddr='define'
-d_gethbyname='define'
-d_gethent='define'
-d_gethname='define'
-d_gethostbyaddr_r='undef'
-d_gethostbyname_r='undef'
-d_gethostent_r='undef'
-d_gethostprotos='define'
-d_getitimer='define'
-d_getlogin='define'
-d_getlogin_r='undef'
-d_getmnt='undef'
-d_getmntent='define'
-d_getnbyaddr='define'
-d_getnbyname='define'
-d_getnent='define'
-d_getnetbyaddr_r='undef'
-d_getnetbyname_r='undef'
-d_getnetent_r='undef'
-d_getnetprotos='define'
-d_getpagsz='define'
-d_getpbyname='define'
-d_getpbynumber='define'
-d_getpent='define'
-d_getpgid='define'
-d_getpgrp2='undef'
-d_getpgrp='define'
-d_getppid='define'
-d_getprior='define'
-d_getprotobyname_r='undef'
-d_getprotobynumber_r='undef'
-d_getprotoent_r='undef'
-d_getprotoprotos='define'
-d_getprpwnam='undef'
-d_getpwent='define'
-d_getpwent_r='undef'
-d_getpwnam_r='undef'
-d_getpwuid_r='undef'
-d_getsbyname='define'
-d_getsbyport='define'
-d_getsent='define'
-d_getservbyname_r='undef'
-d_getservbyport_r='undef'
-d_getservent_r='undef'
-d_getservprotos='define'
-d_getspnam='define'
-d_getspnam_r='undef'
-d_gettimeod='define'
-d_gmtime_r='undef'
-d_gnulibc='undef'
-d_grpasswd='define'
-d_hasmntopt='define'
-d_htonl='define'
-d_ilogbl='define'
-d_index='undef'
-d_inetaton='undef'
-d_int64_t='define'
-d_isascii='define'
-d_isfinite='undef'
-d_isinf='undef'
-d_isnan='define'
-d_isnanl='define'
-d_killpg='define'
-d_lchown='define'
-d_ldbl_dig='define'
-d_link='define'
-d_localtime_r='undef'
-d_locconv='define'
-d_lockf='define'
-d_longdbl='define'
-d_longlong='define'
-d_lseekproto='define'
-d_lstat='define'
-d_madvise='define'
-d_mblen='define'
-d_mbstowcs='define'
-d_mbtowc='define'
-d_memchr='define'
-d_memcmp='define'
-d_memcpy='define'
-d_memmove='define'
-d_memset='define'
-d_mkdir='define'
-d_mkdtemp='define'
-d_mkfifo='define'
-d_mkstemp='define'
-d_mkstemps='define'
-d_mktime='define'
-d_mmap='define'
-d_modfl='define'
-d_modfl_pow32_bug='undef'
-d_modflproto='undef'
-d_mprotect='define'
-d_msg='define'
-d_msg_ctrunc='define'
-d_msg_dontroute='define'
-d_msg_oob='define'
-d_msg_peek='define'
-d_msg_proxy='undef'
-d_msgctl='define'
-d_msgget='define'
-d_msghdr_s='define'
-d_msgrcv='define'
-d_msgsnd='define'
-d_msync='define'
-d_munmap='define'
-d_mymalloc='undef'
-d_nice='define'
-d_nl_langinfo='define'
-d_nv_preserves_uv='undef'
-d_off64_t='define'
-d_old_pthread_create_joinable='undef'
-d_oldpthreads='undef'
-d_oldsock='undef'
-d_open3='define'
-d_pathconf='define'
-d_pause='define'
-d_perl_otherlibdirs='undef'
-d_phostname='undef'
-d_pipe='define'
-d_poll='define'
-d_portable='define'
-d_procselfexe='undef'
-d_pthread_atfork='define'
-d_pthread_attr_setscope='define'
-d_pthread_yield='undef'
-d_pwage='define'
-d_pwchange='undef'
-d_pwclass='undef'
-d_pwcomment='define'
-d_pwexpire='undef'
-d_pwgecos='define'
-d_pwpasswd='define'
-d_pwquota='undef'
-d_qgcvt='define'
-d_quad='define'
-d_random_r='undef'
-d_readdir64_r='undef'
-d_readdir='define'
-d_readdir_r='undef'
-d_readlink='define'
-d_readv='define'
-d_recvmsg='define'
-d_rename='define'
-d_rewinddir='define'
-d_rmdir='define'
-d_safebcpy='undef'
-d_safemcpy='undef'
-d_sanemcmp='define'
-d_sbrkproto='define'
-d_scalbnl='define'
-d_sched_yield='undef'
-d_scm_rights='define'
-d_seekdir='define'
-d_select='define'
-d_sem='define'
-d_semctl='define'
-d_semctl_semid_ds='undef'
-d_semctl_semun='define'
-d_semget='define'
-d_semop='define'
-d_sendmsg='define'
-d_setegid='define'
-d_seteuid='define'
-d_setgrent='define'
-d_setgrent_r='undef'
-d_setgrps='define'
-d_sethent='define'
-d_sethostent_r='undef'
-d_setitimer='define'
-d_setlinebuf='define'
-d_setlocale='define'
-d_setlocale_r='undef'
-d_setnent='define'
-d_setnetent_r='undef'
-d_setpent='define'
-d_setpgid='define'
-d_setpgrp2='undef'
-d_setpgrp='define'
-d_setprior='define'
-d_setproctitle='undef'
-d_setprotoent_r='undef'
-d_setpwent='define'
-d_setpwent_r='undef'
-d_setregid='define'
-d_setresgid='undef'
-d_setresuid='undef'
-d_setreuid='define'
-d_setrgid='undef'
-d_setruid='undef'
-d_setsent='define'
-d_setservent_r='undef'
-d_setsid='define'
-d_setvbuf='define'
-d_sfio='undef'
-d_shm='define'
-d_shmat='define'
-d_shmatprototype='define'
-d_shmctl='define'
-d_shmdt='define'
-d_shmget='define'
-d_sigaction='define'
-d_sigprocmask='define'
-d_sigsetjmp='define'
-d_sockatmark='define'
-d_sockatmarkproto='define'
-d_socket='define'
-d_socklen_t='define'
-d_sockpair='define'
-d_socks5_init='undef'
-d_sqrtl='define'
-d_srand48_r='undef'
-d_srandom_r='undef'
-d_sresgproto='undef'
-d_sresuproto='undef'
-d_statblks='define'
-d_statfs_f_flags='undef'
-d_statfs_s='define'
-d_statvfs='define'
-d_stdio_cnt_lval='define'
-d_stdio_ptr_lval='define'
-d_stdio_ptr_lval_nochange_cnt='define'
-d_stdio_ptr_lval_sets_cnt='undef'
-d_stdio_stream_array='define'
-d_stdiobase='define'
-d_stdstdio='define'
-d_strchr='define'
-d_strcoll='define'
-d_strctcpy='define'
-d_strerrm='strerror(e)'
-d_strerror='define'
-d_strerror_r='undef'
-d_strftime='define'
-d_strtod='define'
-d_strtol='define'
-d_strtold='define'
-d_strtoll='define'
-d_strtoq='undef'
-d_strtoul='define'
-d_strtoull='define'
-d_strtouq='undef'
-d_strxfrm='define'
-d_suidsafe='define'
-d_symlink='define'
-d_syscall='define'
-d_syscallproto='undef'
-d_sysconf='define'
-d_sysernlst=''
-d_syserrlst='define'
-d_system='define'
-d_tcgetpgrp='define'
-d_tcsetpgrp='define'
-d_telldir='define'
-d_telldirproto='define'
-d_time='define'
-d_times='define'
-d_tm_tm_gmtoff='undef'
-d_tm_tm_zone='undef'
-d_tmpnam_r='undef'
-d_truncate='define'
-d_ttyname_r='undef'
-d_tzname='define'
-d_u32align='define'
-d_ualarm='define'
-d_umask='define'
-d_uname='define'
-d_union_semun='undef'
-d_unordered='define'
-d_usleep='define'
-d_usleepproto='define'
-d_ustat='define'
-d_vendorarch='define'
-d_vendorbin='define'
-d_vendorlib='define'
-d_vendorscript='define'
-d_vfork='undef'
-d_void_closedir='undef'
-d_voidsig='define'
-d_voidtty=''
-d_volatile='define'
-d_vprintf='define'
-d_wait4='define'
-d_waitpid='define'
-d_wcstombs='define'
-d_wctomb='define'
-d_writev='define'
-d_xenix='undef'
-date='date'
-db_hashtype='u_int32_t'
-db_prefixtype='size_t'
-db_version_major=''
-db_version_minor=''
-db_version_patch=''
-defvoidused='15'
-direntrytype='struct dirent'
-dlext='so'
-doublesize='8'
-drand01='drand48()'
-drand48_r_proto='0'
-eagain='EAGAIN'
-ebcdic='undef'
-echo='echo'
-egrep='egrep'
-emacs=''
-endgrent_r_proto='0'
-endhostent_r_proto='0'
-endnetent_r_proto='0'
-endprotoent_r_proto='0'
-endpwent_r_proto='0'
-endservent_r_proto='0'
-eunicefix=':'
-exe_ext=''
-expr='expr'
-extensions='B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re Errno'
-extras=''
-fflushNULL='define'
-fflushall='undef'
-find=''
-firstmakefile='makefile'
-flex=''
-fpossize='8'
-fpostype='fpos_t'
-freetype='void'
-from=':'
-full_ar='/usr/ccs/bin/ar'
-full_csh='/usr/bin/csh'
-full_sed='/usr/bin/sed'
-gccansipedantic=''
-gccosandvers=''
-gccversion=''
-getgrent_r_proto='0'
-getgrgid_r_proto='0'
-getgrnam_r_proto='0'
-gethostbyaddr_r_proto='0'
-gethostbyname_r_proto='0'
-gethostent_r_proto='0'
-getlogin_r_proto='0'
-getnetbyaddr_r_proto='0'
-getnetbyname_r_proto='0'
-getnetent_r_proto='0'
-getprotobyname_r_proto='0'
-getprotobynumber_r_proto='0'
-getprotoent_r_proto='0'
-getpwent_r_proto='0'
-getpwnam_r_proto='0'
-getpwuid_r_proto='0'
-getservbyname_r_proto='0'
-getservbyport_r_proto='0'
-getservent_r_proto='0'
-getspnam_r_proto='0'
-gidformat='"ld"'
-gidsign='-1'
-gidsize='4'
-gidtype='gid_t'
-glibpth='/usr/shlib /usr/lib /usr/lib/386 /lib/386 /usr/ccs/lib /usr/local/lib'
-gmake='gmake'
-gmtime_r_proto='0'
-gnulibc_version=''
-grep='grep'
-groupcat='cat /etc/group'
-groupstype='gid_t'
-gzip='gzip'
-h_fcntl='true'
-h_sysfile='false'
-hint='recommended'
-hostcat='cat /etc/hosts'
-html1dir=''
-html1direxp=''
-html3dir=''
-html3direxp=''
-i16size='2'
-i16type='short'
-i32size='4'
-i32type='long'
-i64size='8'
-i64type='long long'
-i8size='1'
-i8type='char'
-i_arpainet='define'
-i_bsdioctl=''
-i_crypt='define'
-i_db='undef'
-i_dbm='undef'
-i_dirent='define'
-i_dld='undef'
-i_dlfcn='define'
-i_fcntl='define'
-i_float='define'
-i_fp='undef'
-i_fp_class='undef'
-i_gdbm='undef'
-i_grp='define'
-i_ieeefp='define'
-i_inttypes='define'
-i_langinfo='define'
-i_libutil='undef'
-i_limits='define'
-i_locale='define'
-i_machcthr='undef'
-i_malloc='define'
-i_math='define'
-i_memory='undef'
-i_mntent='undef'
-i_ndbm='define'
-i_netdb='define'
-i_neterrno='undef'
-i_netinettcp='define'
-i_niin='define'
-i_poll='define'
-i_prot='undef'
-i_pthread='define'
-i_pwd='define'
-i_rpcsvcdbm='define'
-i_sfio='undef'
-i_sgtty='undef'
-i_shadow='define'
-i_socks='undef'
-i_stdarg='define'
-i_stddef='define'
-i_stdlib='define'
-i_string='define'
-i_sunmath='undef'
-i_sysaccess='undef'
-i_sysdir='undef'
-i_sysfile='undef'
-i_sysfilio='define'
-i_sysin='undef'
-i_sysioctl='define'
-i_syslog='define'
-i_sysmman='define'
-i_sysmode='define'
-i_sysmount='define'
-i_sysndir='undef'
-i_sysparam='define'
-i_sysresrc='define'
-i_syssecrt='undef'
-i_sysselct='define'
-i_syssockio='define'
-i_sysstat='define'
-i_sysstatfs='define'
-i_sysstatvfs='define'
-i_systime='define'
-i_systimek='undef'
-i_systimes='define'
-i_systypes='define'
-i_sysuio='define'
-i_sysun='define'
-i_sysutsname='define'
-i_sysvfs='define'
-i_syswait='define'
-i_termio='undef'
-i_termios='define'
-i_time='undef'
-i_unistd='define'
-i_ustat='define'
-i_utime='define'
-i_values='define'
-i_varargs='undef'
-i_varhdr='stdarg.h'
-i_vfork='undef'
-ignore_versioned_solibs=''
-inc_version_list=''
-inc_version_list_init='0'
-incpath=''
-inews=''
-installbin='/usr/perl5/5.8.4/bin'
-installhtml1dir=''
-installhtml3dir=''
-installman1dir='/usr/perl5/5.8.4/man/man1'
-installman3dir='/usr/perl5/5.8.4/man/man3'
-installprefix='/usr/perl5/5.8.4'
-installprefixexp='/usr/perl5/5.8.4'
-installscript='/usr/perl5/5.8.4/bin'
-installsitearch='/usr/perl5/site_perl/5.8.4/sun4-solaris-64int'
-installsitebin='/usr/perl5/5.8.4/bin'
-installsitehtml1dir=''
-installsitehtml3dir=''
-installsitelib='/usr/perl5/site_perl/5.8.4'
-installsiteman1dir='/usr/perl5/5.8.4/man/man1'
-installsiteman3dir='/usr/perl5/5.8.4/man/man3'
-installsitescript='/usr/perl5/5.8.4/bin'
-installstyle='lib'
-installusrbinperl='undef'
-installvendorarch='/usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int'
-installvendorbin='/usr/perl5/5.8.4/bin'
-installvendorhtml1dir=''
-installvendorhtml3dir=''
-installvendorlib='/usr/perl5/vendor_perl/5.8.4'
-installvendorman1dir='/usr/perl5/5.8.4/man/man1'
-installvendorman3dir='/usr/perl5/5.8.4/man/man3'
-installvendorscript='/usr/perl5/5.8.4/bin'
-intsize='4'
-issymlink='test -h'
-ivdformat='"lld"'
-ivsize='8'
-ivtype='long long'
-known_extensions='B ByteLoader Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call GDBM_File I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Thread Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re'
-ksh=''
-ld='gcc'
-lddlflags='-G'
-ldflags=''
-ldflags_uselargefiles=''
-ldlibpthname='LD_LIBRARY_PATH'
-less='less'
-lib_ext='.a'
-libc='/lib/libc.so'
-libperl='libperl.so'
-libsdirs='/usr/lib'
-libsfiles='libsocket.so.1 libnsl.so.1 libdl.so.1 libm.so.2 libc.so.1'
-libsfound='/usr/lib/libsocket.so.1 /usr/lib/libnsl.so.1 /usr/lib/libdl.so.1 /usr/lib/libm.so.2 /usr/lib/libc.so.1'
-libspath='/lib /usr/lib /usr/ccs/lib'
-libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db dl dld sun m util c cposix posix bsd BSD'
-libswanted_uselargefiles=''
-line=''
-lint=''
-lkflags=''
-ln='ln'
-lns='/usr/bin/ln -s'
-localtime_r_proto='0'
-locincpth='/usr/sfw/include /opt/sfw/include /usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
-loclibpth='/usr/sfw/lib /opt/sfw/lib /usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
-longdblsize='16'
-longlongsize='8'
-longsize='4'
-lp=''
-lpr=''
-ls='ls'
-lseeksize='8'
-lseektype='off_t'
-mail=''
-mailx=''
-make='make'
-make_set_make='#'
-mallocobj=''
-mallocsrc=''
-malloctype='void *'
-man1dir='/usr/perl5/5.8.4/man/man1'
-man1direxp='/usr/perl5/5.8.4/man/man1'
-man1ext='1'
-man3dir='/usr/perl5/5.8.4/man/man3'
-man3direxp='/usr/perl5/5.8.4/man/man3'
-man3ext='3'
-mips_type=''
-mistrustnm='run'
-mkdir='mkdir'
-mmaptype='caddr_t'
-modetype='mode_t'
-more='more'
-multiarch='undef'
-mv=''
-myarchname='sun4-solaris'
-mydomain='.sun.com'
-myhostname='localhost'
-myuname='sunos localhost 5.11 sun4u sparc SUNW,Ultra-2'
-n=''
-need_va_copy='undef'
-netdb_hlen_type='size_t'
-netdb_host_type='const void *'
-netdb_name_type='const char *'
-netdb_net_type='in_addr_t'
-nm='nm'
-nm_opt='-p'
-nm_so_opt=''
-nonxs_ext='Errno'
-nroff='nroff'
-nvEUformat='"E"'
-nvFUformat='"F"'
-nvGUformat='"G"'
-nv_preserves_uv_bits='53'
-nveformat='"e"'
-nvfformat='"f"'
-nvgformat='"g"'
-nvsize='8'
-nvtype='double'
-o_nonblock='O_NONBLOCK'
-obj_ext='.o'
-old_pthread_create_joinable=''
-optimize='-O2 -fno-strict-aliasing'
-orderlib='false'
-otherlibdirs=''
-package='perl5'
-pager='/usr/bin/more'
-passcat='cat /etc/passwd'
-patchlevel='8'
-path_sep=':'
-perl5='/bin/perl'
-perl=''
-perl_patchlevel=''
-perladmin='perl-bugs@sun.com'
-perllibs='-lsocket -lnsl -ldl -lm -lc'
-perlpath='/usr/perl5/5.8.4/bin/perl'
-pg='pg'
-phostname='hostname'
-pidtype='pid_t'
-plibpth=''
-pmake=''
-pr=''
-prefixexp='/usr/perl5/5.8.4'
-privlib='/usr/perl5/5.8.4/lib'
-procselfexe=''
-prototype='define'
-ptrsize='4'
-quadkind='3'
-quadtype='long long'
-randbits='48'
-randfunc='drand48'
-random_r_proto='0'
-randseedtype='long'
-ranlib=':'
-rd_nodata='-1'
-readdir64_r_proto='0'
-readdir_r_proto='0'
-revision='5'
-rm='rm'
-rmail=''
-run=''
-runnm='true'
-sPRIEUldbl='"LE"'
-sPRIFUldbl='"LF"'
-sPRIGUldbl='"LG"'
-sPRIXU64='"llX"'
-sPRId64='"lld"'
-sPRIeldbl='"Le"'
-sPRIfldbl='"Lf"'
-sPRIgldbl='"Lg"'
-sPRIi64='"lli"'
-sPRIo64='"llo"'
-sPRIu64='"llu"'
-sPRIx64='"llx"'
-sSCNfldbl='"Lf"'
-sched_yield='undef'
-scriptdir='/usr/perl5/5.8.4/bin'
-scriptdirexp='/usr/perl5/5.8.4/bin'
-sed='sed'
-seedfunc='srand48'
-selectminbits='32'
-selecttype='fd_set *'
-sendmail=''
-setgrent_r_proto='0'
-sethostent_r_proto='0'
-setlocale_r_proto='0'
-setnetent_r_proto='0'
-setprotoent_r_proto='0'
-setpwent_r_proto='0'
-setservent_r_proto='0'
-sh='/bin/sh'
-shar=''
-shmattype='void *'
-shortsize='2'
-shrpenv=''
-sig_count='49'
-sig_name='ZERO HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM USR1 USR2 CHLD PWR WINCH URG IO STOP TSTP CONT TTIN TTOU VTALRM PROF XCPU XFSZ WAITING LWP FREEZE THAW CANCEL LOST XRES JVM1 JVM2 RTMIN NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 RTMAX IOT CLD POLL'
-sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "EMT", "FPE", "KILL", "BUS", "SEGV", "SYS", "PIPE", "ALRM", "TERM", "USR1", "USR2", "CHLD", "PWR", "WINCH", "URG", "IO", "STOP", "TSTP", "CONT", "TTIN", "TTOU", "VTALRM", "PROF", "XCPU", "XFSZ", "WAITING", "LWP", "FREEZE", "THAW", "CANCEL", "LOST", "XRES", "JVM1", "JVM2", "RTMIN", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "RTMAX", "IOT", "CLD", "POLL", 0'
-sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 6 18 22'
-sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 6, 18, 22, 0'
-sig_size='52'
-signal_t='void'
-sitearch='/usr/perl5/site_perl/5.8.4/sun4-solaris-64int'
-sitearchexp='/usr/perl5/site_perl/5.8.4/sun4-solaris-64int'
-sitebin='/usr/perl5/5.8.4/bin'
-sitebinexp='/usr/perl5/5.8.4/bin'
-sitehtml1dir=''
-sitehtml1direxp=''
-sitehtml3dir=''
-sitehtml3direxp=''
-sitelib='/usr/perl5/site_perl/5.8.4'
-sitelib_stem='/usr/perl5/site_perl'
-sitelibexp='/usr/perl5/site_perl/5.8.4'
-siteman1dir='/usr/perl5/5.8.4/man/man1'
-siteman1direxp='/usr/perl5/5.8.4/man/man1'
-siteman3dir='/usr/perl5/5.8.4/man/man3'
-siteman3direxp='/usr/perl5/5.8.4/man/man3'
-siteprefix='/usr/perl5/5.8.4'
-siteprefixexp='/usr/perl5/5.8.4'
-sitescript='/usr/perl5/5.8.4/bin'
-sitescriptexp='/usr/perl5/5.8.4/bin'
-sizesize='4'
-sizetype='size_t'
-sleep=''
-smail=''
-sockethdr=''
-socketlib=''
-socksizetype='int'
-sort='sort'
-spackage='Perl5'
-spitshell='cat'
-srand48_r_proto='0'
-srandom_r_proto='0'
-src='.'
-ssizetype='ssize_t'
-startperl='#!/usr/perl5/5.8.4/bin/perl'
-stdchar='unsigned char'
-stdio_base='((fp)->_base)'
-stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)'
-stdio_cnt='((fp)->_cnt)'
-stdio_filbuf=''
-stdio_ptr='((fp)->_ptr)'
-stdio_stream_array='__iob'
-strerror_r_proto='0'
-strings='/usr/include/string.h'
-submit=''
-subversion='4'
-sysman='/usr/share/man/man1'
-tail=''
-tar=''
-targetarch=''
-tbl=''
-tee=''
-test='test'
-timeincl='/usr/include/sys/time.h'
-timetype='time_t'
-tmpnam_r_proto='0'
-to=':'
-touch='touch'
-tr='tr'
-trnl='\n'
-troff=''
-ttyname_r_proto='0'
-u16size='2'
-u16type='unsigned short'
-u32size='4'
-u32type='unsigned long'
-u64size='8'
-u64type='unsigned long long'
-u8size='1'
-u8type='unsigned char'
-uidformat='"ld"'
-uidsign='-1'
-uidsize='4'
-uidtype='uid_t'
-uname='uname'
-uniq='uniq'
-uquadtype='unsigned long long'
-use5005threads='undef'
-use64bitall='undef'
-use64bitint='define'
-usecrosscompile='undef'
-usedl='define'
-usefaststdio='define'
-useithreads='undef'
-uselargefiles='define'
-uselongdouble='undef'
-usemallocwrap='define'
-usemorebits='undef'
-usemultiplicity='undef'
-usemymalloc='n'
-usenm='true'
-useopcode='true'
-useperlio='define'
-useposix='true'
-usereentrant='undef'
-usesfio='false'
-useshrplib='true'
-usesocks='undef'
-usethreads='undef'
-usevendorprefix='define'
-usevfork='false'
-usrinc='/usr/include'
-uuname=''
-uvXUformat='"llX"'
-uvoformat='"llo"'
-uvsize='8'
-uvtype='unsigned long long'
-uvuformat='"llu"'
-uvxformat='"llx"'
-vendorarch='/usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int'
-vendorarchexp='/usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int'
-vendorbin='/usr/perl5/5.8.4/bin'
-vendorbinexp='/usr/perl5/5.8.4/bin'
-vendorhtml1dir=''
-vendorhtml1direxp=''
-vendorhtml3dir=''
-vendorhtml3direxp=''
-vendorlib='/usr/perl5/vendor_perl/5.8.4'
-vendorlib_stem='/usr/perl5/vendor_perl'
-vendorlibexp='/usr/perl5/vendor_perl/5.8.4'
-vendorman1dir='/usr/perl5/5.8.4/man/man1'
-vendorman1direxp='/usr/perl5/5.8.4/man/man1'
-vendorman3dir='/usr/perl5/5.8.4/man/man3'
-vendorman3direxp='/usr/perl5/5.8.4/man/man3'
-vendorprefix='/usr/perl5/5.8.4'
-vendorprefixexp='/usr/perl5/5.8.4'
-vendorscript='/usr/perl5/5.8.4/bin'
-vendorscriptexp='/usr/perl5/5.8.4/bin'
-version='5.8.4'
-version_patchlevel_string='version 8 subversion 4'
-versiononly='undef'
-vi=''
-voidflags='15'
-xlibpth='/usr/lib/386 /lib/386'
-yacc='yacc'
-yaccflags=''
-zcat=''
-zip='zip'
-!END!
-
-# Search for it in the big string 
-sub fetch_string {
-    my($self, $key) = @_;
-
-    my $quote_type = "'";
-    my $marker = "$key=";
-
-    # Check for the common case, ' delimited
-    my $start = index($Config_SH, "\n$marker$quote_type");
-    # If that failed, check for " delimited
-    if ($start == -1) {
-        $quote_type = '"';
-        $start = index($Config_SH, "\n$marker$quote_type");
-    }
-    return undef if ( ($start == -1) &&  # in case it's first 
-                      (substr($Config_SH, 0, length($marker)) ne $marker) );
-    if ($start == -1) { 
-        # It's the very first thing we found. Skip $start forward
-        # and figure out the quote mark after the =.
-        $start = length($marker) + 1;
-        $quote_type = substr($Config_SH, $start - 1, 1);
-    } 
-    else { 
-        $start += length($marker) + 2;
-    }
-
-    my $value = substr($Config_SH, $start, 
-                       index($Config_SH, "$quote_type\n", $start) - $start);
-
-    # If we had a double-quote, we'd better eval it so escape
-    # sequences and such can be interpolated. Since the incoming
-    # value is supposed to follow shell rules and not perl rules,
-    # we escape any perl variable markers
-    if ($quote_type eq '"') {
-	$value =~ s/\$/\\\$/g;
-	$value =~ s/\@/\\\@/g;
-	eval "\$value = \"$value\"";
-    }
-
-    # So we can say "if $Config{'foo'}".
-    $value = undef if $value eq 'undef';
-    $self->{$key} = $value; # cache it
-}
-
-sub fetch_virtual {
-    my($self, $key) = @_;
-
-    my $value;
-
-    if ($key =~ /^((?:cc|ld)flags|libs(?:wanted)?)_nolargefiles/) {
-	# These are purely virtual, they do not exist, but need to
-	# be computed on demand for largefile-incapable extensions.
-	my $new_key = "${1}_uselargefiles";
-	$value = $Config{$1};
-	my $withlargefiles = $Config{$new_key};
-	if ($new_key =~ /^(?:cc|ld)flags_/) {
-	    $value =~ s/\Q$withlargefiles\E\b//;
-	} elsif ($new_key =~ /^libs/) {
-	    my @lflibswanted = split(' ', $Config{libswanted_uselargefiles});
-	    if (@lflibswanted) {
-		my %lflibswanted;
-		@lflibswanted{@lflibswanted} = ();
-		if ($new_key =~ /^libs_/) {
-		    my @libs = grep { /^-l(.+)/ &&
-                                      not exists $lflibswanted{$1} }
-		                    split(' ', $Config{libs});
-		    $Config{libs} = join(' ', @libs);
-		} elsif ($new_key =~ /^libswanted_/) {
-		    my @libswanted = grep { not exists $lflibswanted{$_} }
-		                          split(' ', $Config{libswanted});
-		    $Config{libswanted} = join(' ', @libswanted);
-		}
-	    }
-	}
-    }
-
-    $self->{$key} = $value;
-}
-
-sub FETCH { 
-    my($self, $key) = @_;
-
-    # check for cached value (which may be undef so we use exists not defined)
-    return $self->{$key} if exists $self->{$key};
-
-    $self->fetch_string($key);
-    return $self->{$key} if exists $self->{$key};
-    $self->fetch_virtual($key);
-
-    # Might not exist, in which undef is correct.
-    return $self->{$key};
-}
- 
-my $prevpos = 0;
-
-sub FIRSTKEY {
-    $prevpos = 0;
-    substr($Config_SH, 0, index($Config_SH, '=') );
-}
-
-sub NEXTKEY {
-    # Find out how the current key's quoted so we can skip to its end.
-    my $quote = substr($Config_SH, index($Config_SH, "=", $prevpos)+1, 1);
-    my $pos = index($Config_SH, qq($quote\n), $prevpos) + 2;
-    my $len = index($Config_SH, "=", $pos) - $pos;
-    $prevpos = $pos;
-    $len > 0 ? substr($Config_SH, $pos, $len) : undef;
-}
-
-sub EXISTS { 
-    return 1 if exists($_[0]->{$_[1]});
-
-    return(index($Config_SH, "\n$_[1]='") != -1 or
-           substr($Config_SH, 0, length($_[1])+2) eq "$_[1]='" or
-           index($Config_SH, "\n$_[1]=\"") != -1 or
-           substr($Config_SH, 0, length($_[1])+2) eq "$_[1]=\"" or
-           $_[1] =~ /^(?:(?:cc|ld)flags|libs(?:wanted)?)_nolargefiles$/
-          );
-}
-
-sub STORE  { die "\%Config::Config is read-only\n" }
-*DELETE = \&STORE;
-*CLEAR  = \&STORE;
-
-
-sub config_sh {
-    $Config_SH
-}
-
-sub config_re {
-    my $re = shift;
-    return map { chomp; $_ } grep /^$re=/, split /^/, $Config_SH;
-}
-
-sub config_vars {
-    foreach (@_) {
-	if (/\W/) {
-	    my @matches = config_re($_);
-	    print map "$_\n", @matches ? @matches : "$_: not found";
-	} else {
-	    my $v = (exists $Config{$_}) ? $Config{$_} : 'UNKNOWN';
-	    $v = 'undef' unless defined $v;
-	    print "$_='$v';\n";
-	}
-    }
-}
-
-sub TIEHASH {
-    bless $_[1], $_[0];
-}
-
-# avoid Config..Exporter..UNIVERSAL search for DESTROY then AUTOLOAD
-sub DESTROY { }
-
-my $i = 0;
-foreach my $c (8,7,6,5,4,3,2) { $i |= ord($c); $i <<= 8 }
-$i |= ord(1);
-my $value = join('', unpack('aaaaaaaa', pack('Q', $i)));
-
-
-tie %Config, 'Config', {
-    'archlibexp' => '/usr/perl5/5.8.4/lib/sun4-solaris-64int',
-    'archname' => 'sun4-solaris-64int',
-    'cc' => 'gcc',
-    'ccflags' => '-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TS_ERRNO',
-    'cppflags' => '',
-    'dlsrc' => 'dl_dlopen.xs',
-    'dynamic_ext' => 'B ByteLoader Cwd Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Encode Fcntl File/Glob Filter/Util/Call I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Time/HiRes Unicode/Normalize XS/APItest XS/Typemap attrs re',
-    'installarchlib' => '/usr/perl5/5.8.4/lib/sun4-solaris-64int',
-    'installprivlib' => '/usr/perl5/5.8.4/lib',
-    'libpth' => '/lib /usr/lib /usr/ccs/lib',
-    'libs' => '-lsocket -lnsl -ldl -lm -lc',
-    'osname' => 'solaris',
-    'osvers' => '2.11',
-    'prefix' => '/usr/perl5/5.8.4',
-    'privlibexp' => '/usr/perl5/5.8.4/lib',
-    'sharpbang' => '#!',
-    'shsharp' => 'true',
-    'so' => 'so',
-    'startsh' => '#!/bin/sh',
-    'static_ext' => '',
-    byteorder => $value,
-
-};
-
-1;
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/PerlGcc/perlgcc.PL	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,62 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-# Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-
-use strict;
-use warnings;
-use Config;
-our $VERSION = '1.2';
-
-my $fh;
-open($fh, ">$ARGV[0]") || die("Can't open perlgcc: $!\n");
-
-my $perlver = sprintf('%vd', $^V);
-my $startperl = $Config{startperl};
-my $perlpath = $Config{perlpath};
-my $privlib = "$Config{installprivlib}/Sun/Solaris/PerlGcc";
-
-print $fh <<EOF;
-$startperl
-#
-# Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-
-use $perlver;
-use strict;
-use warnings;
-our \$VERSION = '$VERSION';
-
-\$ENV{PERL5_OVERRIDE_CONFIG} = '1';
-if (exists(\$ENV{PERL5LIB})) {
-	\$ENV{PERL5LIB} =
-	    "$privlib:\$ENV{PERL5LIB}";
-} else {
-	\$ENV{PERL5LIB} =
-	    '$privlib';
-}
-exec('$perlpath', \@ARGV)
-    || die("Can't exec $perlpath: \$!\\n");
-EOF
-close($fh) || die("Can't open perlgcc: $!\n");
-exit(0);
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/PerlGcc/pod/perlgcc.pod	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,81 +0,0 @@
-#
-# Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License").  You may not use this file except in compliance
-# with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#ident	"%Z%%M%	%I%	%E% SMI"
-#
-
-=head1 NAME
-
-perlgcc - Compile perl modules using gcc.
-
-=head1 SYNOPSIS
-
- perlgcc Makefile.PL; make
-
-=head1 DESCRIPTION
-
-When perl is built it saves the name of the compiler and any compiler flags
-in its configuration files, and then uses these saved settings when any
-additional modules are built.  The perl shipped with Solaris is built with the
-Forte compilers rather than gcc.
-
-If add-on modules are built with the Forte compilers, everyting works as
-expected.  However, if gcc is used to build add-on modules, the saved
-configuration is incorrect as it assumes that the Forte compiler will be
-present.
-
-This command provides a set of perl configuration files that are configured to
-use gcc as the compiler rather than the Forte compiler.  The default
-configuration files are not modified, instead a replacement set of files are
-transparently substituted for the duration of the perlgcc command.
-
-Instead of invoking C<perl Makefile.PL> to generate the makefile needed
-to compile a module, C<perlgcc Makefile.PL> should be used instead.
-All command-line arguments to perlgcc are passed unmodified to C<perl>.
-
-If you use the CPAN.pm module, instead of invoking C<perl -MCPAN -e shell>,
-you should use C<perlgcc -MCPAN -e shell> instead, and use as normal.
-
-=head1 ENVIRONMENT VARIABLES
-
-PERL5LIB
-
-This is modified to point to the location of the replacement perl configuration
-files.
-
-=head2 ATTRIBUTES
-
-See C<attributes(5)> for descriptions of the following attributes:
-
-  ___________________________________________________________
- |       ATTRIBUTE TYPE        |      ATTRIBUTE VALUE        |
- |_____________________________|_____________________________|
- | Availability                | CPAN (http://www.cpan.org)  |
- |_____________________________|_____________________________|
- | Interface Stability         | Evolving                    |
- |_____________________________|_____________________________|
-
-=head1 SEE ALSO
-
-C<perl(1)>, C<perlrun(1)>, C<perlsolaris(1)>.
--- /dev/null	Tue Apr 22 05:37:43 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Pg/Makefile	Tue Apr 22 05:37:43 2014
@@ -0,0 +1,32 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright (c) 2014 Racktop Systems.
+# Copyright 2014, OmniTI Computer Consulting, Inc. All rights reserved.
+#
+
+MODULE = Pg
+
+include $(SRC)/cmd/perl/Makefile.perl
+
+# Install module into arch independent directory
+ROOTPERLMODDIR = $(ROOTPERLDIR)/lib/Sun/Solaris
+
+include $(SRC)/cmd/perl/Makefile.targ
+
+.KEEP_STATE:
+
+all: $(PERLMOD)
+
+install: $(ROOTPERLMOD)
+
+clean clobber:
+	$(RM) -r $(MACH) $(MACH64)
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Pg/Makefile.PL	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,64 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-
-#
-# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
-#
-
-require 5.8.4;
-use strict;
-use warnings;
-use ExtUtils::MakeMaker;
-
-# #defines.
-my @defines = ( DEFINE => exists($ENV{RELEASE_BUILD}) ? '-DNDEBUG' : '' );
-
-# List of POD pages to install.
-my @man3pods = ( MAN3PODS => {} );
-
-
-#
-# If not building as part of ON.
-#
-if (! exists($ENV{CODEMGR_WS})) {
-
-	#
-	# Suppress the setting of LD_RUN_PATH.  The ON build environment
-	# contains a modified MakeMaker that does this automatically, so we
-	# only need to do this if we are building outside of ON.
-	#
-	package MY;
-	no warnings qw(once);
-
-	#
-	# Install the POD documentation for non-ON builds.
-	#
-	my $man3pfx = '$(INST_MAN3DIR)/Sun::Solaris::Pg';
-	@man3pods = (
-	    MAN3PODS => { 'pod/Pg.pod' => $man3pfx . '.$(MAN3EXT)' }
-	);
-}
-
-WriteMakefile(
-    NAME              => 'Sun::Solaris::Pg',
-    VERSION_FROM      => 'Pg.pm',
-    @man3pods,
-);
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/Changes	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,4 +0,0 @@
-# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
-
-Version 1.1
-Initial Public Source release.
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/MANIFEST	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,15 +0,0 @@
-#
-# Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-#ident	"%Z%%M%	%I%	%E% SMI"
-#
-Changes
-MANIFEST
-Makefile.PL
-Privilege.pm
-Privilege.xs
-README
-pod/Privilege.pod
-t/Privilege.t
-typemap
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/Makefile.PL	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,67 +0,0 @@
-#
-# Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Makefile.PL for ::Privilege
-#
-
-require 5.8.4;
-use strict;
-use warnings;
-use ExtUtils::MakeMaker;
-
-# #defines.
-my @defines = ( DEFINE => exists($ENV{RELEASE_BUILD}) ? '-DNDEBUG' : '' );
-
-# List of POD pages to install.
-my @man3pods = ( MAN3PODS => {} );
-
-#
-# If not building as part of ON.
-#
-if (! exists($ENV{ENVCPPFLAGS1})) {
-
-	#
-	# Suppress the setting of LD_RUN_PATH.  The ON build environment
-	# contains a modified MakeMaker that does this automatically, so we
-	# only need to do this if we are building outside of ON.
-	#
-	package MY;
-	no warnings qw(once);
-
-	# Override const_loadlibs to remove LD_RUN_PATH cruft.
-	*const_loadlibs = sub
-	{
-		my $self = shift(@_);
-		delete($self->{LD_RUN_PATH});
-		return($self->SUPER::const_loadlibs(@_));
-	};
-
-	# Override dynamic_lib to get rid of LD_RUN_PATH cruft.
-	*dynamic_lib = sub
-	{
-		my $self = shift(@_);
-		my $txt = $self->SUPER::dynamic_lib(@_);
-		$txt =~ s/LD_RUN_PATH=\S*\s*//;
-		return($txt);
-	};
-
-	# Turn off debugging.
-	@defines = ();
-
-	#
-	# Install the POD documentation for non-ON builds.
-	#
-	my $man3pfx = '$(INST_MAN3DIR)/Sun::Solaris::Privilege';
-	@man3pods = (
-	    MAN3PODS => { 'pod/Privilege.pod' => $man3pfx . '.$(MAN3EXT)' }
-	);
-}
-
-WriteMakefile(
-    NAME         => 'Sun::Solaris::Privilege',
-    VERSION_FROM => 'Privilege.pm',
-    @defines,
-    @man3pods,
-);
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/Privilege.pm	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,49 +0,0 @@
-#
-# Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Privilege.pm provides the bootstrap for the Sun::Solaris::Privilege module.
-#
-
-require 5.8.4;
-use strict;
-use warnings;
-
-package Sun::Solaris::Privilege;
-
-our $VERSION = '1.4';
-
-use XSLoader;
-XSLoader::load(__PACKAGE__, $VERSION);
-
-our (@EXPORT_OK, %EXPORT_TAGS);
-my @constants = qw(PRIV_STR_SHORT PRIV_STR_LIT PRIV_STR_PORT PRIV_ON PRIV_OFF
-	PRIV_SET PRIV_AWARE PRIV_AWARE_RESET PRIV_DEBUG PRIV_PFEXEC
-	PRIV_XPOLICY NET_MAC_AWARE NET_MAC_AWARE_INHERIT __PROC_PROTECT);
-my @syscalls = qw(setppriv getppriv setpflags getpflags);
-my @libcalls = qw(priv_addset priv_copyset priv_delset
-    priv_emptyset priv_fillset priv_intersect priv_inverse priv_ineffect
-    priv_isemptyset priv_isequalset priv_isfullset priv_ismember
-    priv_issubset priv_union priv_set_to_str priv_str_to_set priv_gettext);
-my @variables = qw(%PRIVILEGES %PRIVSETS);
-
-my @private = qw(priv_getsetbynum priv_getbynum);
-
-use vars qw(%PRIVILEGES %PRIVSETS);
-
-#
-# Dynamically gather all the privilege and privilege set names; they are
-# generated in Privileges.xs::BOOT.
-#
-push @constants, keys %PRIVILEGES, keys %PRIVSETS;
-
-@EXPORT_OK = (@constants, @syscalls, @libcalls, @private, @variables);
-%EXPORT_TAGS = (CONSTANTS => \@constants, SYSCALLS => \@syscalls,
-    LIBCALLS => \@libcalls, PRIVATE => \@private, VARIABLES => \@variables,
-    ALL => \@EXPORT_OK);
-
-our @ISA = qw(Exporter);
-
-1;
-__END__
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/Privilege.xs	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,309 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- */
-
-/* Solaris includes. */
-#include <priv.h>
-#include <ctype.h>
-
-/* Perl includes. */
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#define	IVCONST(s, c)	newCONSTSUB(s, #c, newSViv((int)(intptr_t)c));
-#define	POFF		(sizeof ("PRIV_") - 1)
-
-typedef int sysret;
-
-typedef priv_set_t Sun__Solaris__Privilege__Privset;
-
-static priv_set_t *
-dupset(const priv_set_t *s)
-{
-	priv_set_t *new = priv_allocset();
-	if (new == NULL)
-		return (NULL);
-
-	priv_copyset(s, new);
-	return (new);
-}
-
-/*
- * Automatically derive the #define constant from the constant value.
- * This is the uppercase value of the constant with "PRIV_" prepended.
- * The (name, value) pair computed in that way is stored twice:
- * 	once as constant subroutine in the module's hash table.
- *	once as (key, value) in a hash table.
- */
-
-static void
-PRIVconst(HV *sym, HV *var, const char *name)
-{
-	char upname[128];
-	ssize_t len;
-	int i;
-
-	len = snprintf(upname, sizeof (upname), "PRIV_%s", name);
-	if (len >= sizeof (upname))
-		return;
-
-	for (i = POFF; i < len; i++)
-		upname[i] = toupper(upname[i]);
-	newCONSTSUB(sym, upname, newSVpv(name, len - POFF));
-	hv_store(var, upname, len, newSVpv(name, len - POFF), 0);
-}
-
-/*
- * The XS code exported to perl is below here.  Note that the XS preprocessor
- * has its own commenting syntax, so all comments from this point on are in
- * that form.
- *
- * Inside perl, privilege sets are represented as expanded strings;
- * privileges and privilege sets are only known by name.
- */
-
-MODULE = Sun::Solaris::Privilege PACKAGE = Sun::Solaris::Privilege
-PROTOTYPES: ENABLE
-
- #
- # Define any constants that need to be exported.  By doing it this way we can
- # avoid the overhead of using the DynaLoader package, and in addition constants
- # defined using this mechanism are eligible for inlining by the perl
- # interpreter at compile time.
- #
-BOOT:
-{
-	HV *stash;
-	HV *privs;
-	HV *privsets;
-	const char *p;
-	int i;
-
-	stash = gv_stashpv("Sun::Solaris::Privilege", TRUE);
-
-	/*
-	 * Global constants
-	 */
-	IVCONST(stash, PRIV_STR_PORT);
-	IVCONST(stash, PRIV_STR_LIT);
-	IVCONST(stash, PRIV_STR_SHORT);
-	IVCONST(stash, PRIV_ALLSETS);
-	IVCONST(stash, PRIV_DEBUG);
-	IVCONST(stash, PRIV_AWARE);
-	IVCONST(stash, PRIV_ON);
-	IVCONST(stash, PRIV_OFF);
-	IVCONST(stash, PRIV_SET);
-
-	/*
-	 * %PRIVILEGES hash and the privilege constants
-	 */
-	privs = perl_get_hv("Sun::Solaris::Privilege::PRIVILEGES", TRUE);
-	for (i = 0; (p = priv_getbynum(i++)) != NULL; )
-		PRIVconst(stash, privs, p);
-
-	/*
-	 * %PRIVSETS hash and the privset constants
-	 */
-	privsets = perl_get_hv("Sun::Solaris::Privilege::PRIVSETS", TRUE);
-	for (i = 0; (p = priv_getsetbynum(i++)) != NULL; )
-		PRIVconst(stash, privsets, p);
-}
-
-
-Sun::Solaris::Privilege::Privset *
-getppriv(which)
-	const char *which;
-CODE:
-	RETVAL = priv_allocset();
-	if (getppriv(which, RETVAL) != 0) {
-		priv_freeset(RETVAL);
-		XSRETURN_UNDEF;
-	}
-OUTPUT:
-	RETVAL
-CLEANUP:
-	SvREADONLY_on(SvRV(ST(0)));
-
-sysret
-setppriv(op, which, set)
-	int op;
-	const char *which;
-	Sun::Solaris::Privilege::Privset *set;
-
-Sun::Solaris::Privilege::Privset *
-priv_emptyset()
-CODE:
-	RETVAL = priv_allocset();
-	if (RETVAL == NULL) {
-		XSRETURN_UNDEF;
-	}
-	priv_emptyset(RETVAL);
-OUTPUT:
-	RETVAL
-CLEANUP:
-	SvREADONLY_on(SvRV(ST(0)));
-
-Sun::Solaris::Privilege::Privset *
-priv_fillset()
-CODE:
-	RETVAL = priv_allocset();
-	if (RETVAL == NULL) {
-		XSRETURN_UNDEF;
-	}
-	priv_fillset(RETVAL);
-OUTPUT:
-	RETVAL
-CLEANUP:
-	SvREADONLY_on(SvRV(ST(0)));
-
-boolean_t
-priv_isemptyset(set)
-	Sun::Solaris::Privilege::Privset *set;
-
-boolean_t
-priv_isfullset(set)
-	Sun::Solaris::Privilege::Privset *set;
-
-boolean_t
-priv_isequalset(set1, set2)
-	Sun::Solaris::Privilege::Privset *set1;
-	Sun::Solaris::Privilege::Privset *set2;
-
-boolean_t
-priv_issubset(set1, set2)
-	Sun::Solaris::Privilege::Privset *set1;
-	Sun::Solaris::Privilege::Privset *set2;
-
-boolean_t
-priv_ismember(set, priv)
-	Sun::Solaris::Privilege::Privset *set;
-	const char *priv;
-
-boolean_t
-priv_ineffect(priv)
-	const char *priv;
-
-Sun::Solaris::Privilege::Privset *
-priv_intersect(set1, set2)
-	Sun::Solaris::Privilege::Privset *set1;
-	Sun::Solaris::Privilege::Privset *set2;
-CODE:
-	RETVAL = dupset(set2);
-	if (RETVAL == NULL) {
-		XSRETURN_UNDEF;
-	}
-	priv_intersect(set1, RETVAL);
-OUTPUT:
-	RETVAL
-CLEANUP:
-	SvREADONLY_on(SvRV(ST(0)));
-
-Sun::Solaris::Privilege::Privset *
-priv_union(set1, set2)
-	Sun::Solaris::Privilege::Privset *set1;
-	Sun::Solaris::Privilege::Privset *set2;
-CODE:
-	RETVAL = dupset(set2);
-	if (RETVAL == NULL) {
-		XSRETURN_UNDEF;
-	}
-	priv_union(set1, RETVAL);
-OUTPUT:
-	RETVAL
-CLEANUP:
-	SvREADONLY_on(SvRV(ST(0)));
-
-Sun::Solaris::Privilege::Privset *
-priv_inverse(set1)
-	Sun::Solaris::Privilege::Privset *set1;
-CODE:
-	RETVAL = dupset(set1);
-	if (RETVAL == NULL) {
-		XSRETURN_UNDEF;
-	}
-	priv_inverse(RETVAL);
-OUTPUT:
-	RETVAL
-CLEANUP:
-	SvREADONLY_on(SvRV(ST(0)));
-
-
-sysret
-priv_addset(set, priv)
-	Sun::Solaris::Privilege::Privset *set;
-	const char *priv;
-
-Sun::Solaris::Privilege::Privset *
-priv_copyset(set1)
-	Sun::Solaris::Privilege::Privset *set1;
-CODE:
-	RETVAL = dupset(set1);
-	if (RETVAL == NULL) {
-		XSRETURN_UNDEF;
-	}
-OUTPUT:
-	RETVAL
-CLEANUP:
-	SvREADONLY_on(SvRV(ST(0)));
-
-
-sysret
-priv_delset(set, priv)
-	Sun::Solaris::Privilege::Privset *set;
-	const char *priv;
-
-const char *
-priv_getbynum(i)
-	int i;
-
-const char *
-priv_getsetbynum(i)
-	int i;
-
-char *
-priv_set_to_str(s, c, f)
-	Sun::Solaris::Privilege::Privset *s;
-	char c;
-	int f;
-CLEANUP:
-	free(RETVAL);
-
-Sun::Solaris::Privilege::Privset *
-priv_str_to_set(buf, sep);
-	const char *buf;
-	const char *sep;
-CODE:
-	RETVAL = priv_str_to_set(buf, sep, NULL);
-	if (RETVAL == NULL) {
-		XSRETURN_UNDEF;
-	}
-OUTPUT:
-	RETVAL
-CLEANUP:
-	SvREADONLY_on(SvRV(ST(0)));
-
-char *
-priv_gettext(priv)
-	const char *priv
-CLEANUP:
-	free(RETVAL);
-
-sysret
-setpflags(flag, val)
-	uint_t flag;
-	uint_t val;
-
-sysret
-getpflags(flag)
-	uint_t flag;
-
-MODULE = Sun::Solaris::Privilege PACKAGE = Sun::Solaris::Privilege::PrivsetPtr PREFIX = Privilege_
-
-void
-Privilege_DESTROY(ps)
-	Sun::Solaris::Privilege::Privset *ps;
-CODE:
-	if (ps != NULL)
-		priv_freeset(ps);
-
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/README	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,28 +0,0 @@
-#
-# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
-#
-
-Licensing
----------
-This module is released under the Perl Artistic License.
-
-Availability
-------------
-This module is only available for Solaris 10 onwards.
-
-Description
------------
-This module provides access to the Solaris Privilege subsystem.
-
-See getppriv(2), setppriv(2), priv_str_to_set(3C), priv_set(3C),
-priv_addset(3C), privileges(5).
-
-Installation
-------------
-
-1. Uncompress and untar the archive
-2. cd to the module directory
-3. perl Makefile.PL; make install
-
-If you are using gcc and wish to build this module against the perl shipped as
-part of Solaris, see the Solaris-PerlGcc module, also available from CPAN.
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/pod/Privilege.pod	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,148 +0,0 @@
-#
-# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Sun::Solaris::Privilege documentation.
-# 
-
-=head1 NAME
-
-Sun::Solaris::Privilege - Perl interface to Privileges
-
-=head1 SYNOPSIS
-
- use Sun::Solaris::Privilege qw(:ALL);
-
-This module provides wrappers for the Privilege-related system and
-library calls. Also provided are constants from the various
-Privilege-related headers and dynamically generated constants for all
-the privileges and privilege sets.
-
-=head2 Functions
-
-B<C<getppriv($which)>>
-
-This function returns the process privilege set specified by $which.
-
-B<C<setppriv($op, $which, $set)>>
-
-This function modified the privilege set specified by $which in the
-as specified by the $op and $set arguments.  If $op is PRIV_ON the
-privileges in $set are added to the set specified; if $op is PRIV_OFF,
-the privileges in $set are removed from the set specified; if $op
-is PRIV_SET, the specified set is made equal to $set.
-
-B<C<getpflags($flag)>>
-
-Returns the value associated with process $flag or undef on error.
-Possible values for $flag are PRIV_AWARE and PRIV_DEBUG.
-
-B<C<setppflags($flag, $val)>>
-
-Sets the process flag $flag to $val.
-
-B<C<priv_fillset()>>
-
-This returns a new privilege set with all privileges set.
-
-B<C<priv_emptyset()>>
-
-This returns a new empty privilege set.
-
-B<C<priv_isemptyset($set)>>
-
-This function returns whether $set is empty or not.
-
-B<C<priv_isfullset($set)>>
-
-This function returns whether $set is full or not.
-
-B<C<priv_isequalset($a, $b)>>
-
-This function returns whether sets $a and $b are equal.
-
-B<C<priv_issubset($a, $b)>>
-
-This function returns whether set $a is a subset of $b.
-
-B<C<priv_ismember($set, $priv)>>
-
-This function returns whether $priv is a member of $set.
-
-B<C<priv_ineffect($priv)>>
-
-This function returned whether $priv is in the process' effective set.
-
-B<C<priv_intersect($a, $b)>>
-
-This function returns a new privilege set which is the intersection of $a
-and $b
-
-B<C<priv_union($a, $b)>>
-
-This function returns a new privilege set which is the union of $a
-and $b
-
-B<C<priv_inverse($a)>>
-
-This function returns a new privilege set which is the inverse of $a.
-
-B<C<priv_addset($set, $priv)>>
-
-This functon adds the privilege $priv to $set.
-
-B<C<priv_copyset($a)>>
-
-This function returns a copy of the privilege set $a.
-
-B<C<priv_delset($set, $priv)>>
-
-This function remove the privilege $priv from $set.
-
-=head2 Class methods
-
-None.
-
-=head2 Object methods
-
-None.
-
-=head2 Exports
-
-By default nothing is exported from this module. The following tags can be
-used to selectively import constants and functions defined in this module:
-
- :SYSCALLS    getppriv(), setppriv()
-
- :LIBCALLS    priv_addset(), priv_copyset(), priv_delset(),
-	      priv_emptyset(), priv_fillset(), priv_intersect(),
-	      priv_inverse(), priv_isemptyset(), priv_isequalset(),
-	      priv_isfullset(), priv_ismember(), priv_issubset(),
-	      priv_gettext(), priv_union(), priv_set_to_str(),
-	      priv_str_to_set()
-
- :CONSTANTS   PRIV_STR_SHORT PRIV_STR_LIT PRIV_STR_PORT PRIV_ON PRIV_OFF
-	      PRIV_SET PRIV_ALLSETS PRIV_AWARE PRIV_DEBUG
-	      plus constant for all privileges and privilege sets.
-
- :VARIABLES   %PRIVILEGES, %PRIVSETS
-
- :ALL         :SYSCALLS, :LIBCALLS, :CONSTANTS and :VARIABLES
-
-=head1 ATTRIBUTES
-
-See C<attributes(5)> for descriptions of the following attributes:
-
-  ___________________________________________________________
- |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
- |_____________________________|_____________________________|
- | Availability                | CPAN (http://www.cpan.org)  |
- |_____________________________|_____________________________|
- | Interface Stability         | Evolving                    |
- |_____________________________|_____________________________|
-
-=head1 SEE ALSO
-
-C<getpflags(2)>, C<getppriv(2)>, C<priv_addset(3C)>, C<priv_str_to_set(3C)>,
-C<priv_set(3C)>, C<privileges(5)>, C<attributes(5)>
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/t/Privilege.t	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,278 +0,0 @@
-#
-# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# test script for Sun::Solaris::Privilege
-#
-
-$^W = 1;
-use strict;
-use Data::Dumper;
-$Data::Dumper::Terse = 1;
-$Data::Dumper::Indent = 0;
-
-#
-# Status reporting utils
-#
-
-use vars qw($test);
-$test = 1;
-
-sub pass
-{
-	print("ok $test $@\n");
-	$test++;
-}
-
-sub fail
-{
-	print("not ok $test $@\n");
-	$test++;
-}
-
-sub fatal
-{
-	print("not ok $test $@\n");
-	exit(1);
-}
-
-my $errs;
-
-sub report
-{
-	if ($errs) {
-		fail();
-	} else {
-		pass();
-	}
-	$errs = 0;
-}
-
-#
-# Main body of tests starts here
-#
-
-my ($loaded, $line) = (1, 0);
-my $fh = do { local *FH; *FH; };
-
-# 1. Check the module loads
-BEGIN { $| = 1; print "1..15\n"; }
-END   { print "not ok 1\n" unless $loaded; }
-use Sun::Solaris::Privilege qw(:ALL :PRIVATE);
-$loaded = 1;
-pass();
-
-#
-# 2. ppriv -l works
-#
-my $privs = `ppriv -l`;
-if ($privs eq "") {
-	fail();
-} else {
-	pass();
-}
-my @privs = split(/\s+/, $privs);
-
-#
-# 3. Are all privileges according ppriv -l defined in the privileges hash?
-#
-
-my %sprivs;
-foreach my $p (@privs)
-{
-	my $cn = $p;
-	$cn =~ s/.*/PRIV_\U$&/;
-	$sprivs{$cn} = $p;
-	$errs++ if (!defined $PRIVILEGES{$cn} || $PRIVILEGES{$cn} ne $p);
-}
-report();
-
-#
-# 4. And are those all the privileges.
-#
-foreach my $p (keys %PRIVILEGES)
-{
-	$errs++ if (!defined $sprivs{$p});
-}
-report();
-
-#
-# 5. Verify that all privileges are part of the full set.
-#
-my $full = priv_fillset();
-
-foreach my $p (keys %PRIVILEGES)
-{
-	$errs++ if (!priv_ismember($full, $p));
-}
-report();
-
-#
-# 6. Verify that no privilege is part of the empty set.
-#
-my $empty = priv_emptyset();
-
-foreach my $p (keys %PRIVILEGES)
-{
-	$errs++ if (priv_ismember($empty, $p));
-}
-report();
-
-#
-# 7. Verify that priv_delset removes privileges.
-#
-foreach my $p (keys %PRIVILEGES)
-{
-	my $testset = priv_fillset();
-	$errs++ unless priv_delset($testset, $p);
-	$errs++ if priv_ismember($testset, $p);
-	
-}
-report();
-
-#
-# 8. Verify getpflags/setpflags.
-#
-my $pflags;
-$errs++ unless ($pflags = getpflags(PRIV_AWARE));
-
-$errs++ unless setpflags(PRIV_AWARE, 0);
-$errs++ unless setpflags(PRIV_DEBUG, 1);
-$errs++ unless (getpflags(PRIV_DEBUG) == 1);
-$errs++ unless setpflags(PRIV_DEBUG, 0);
-$errs++ unless (getpflags(PRIV_DEBUG) == 0);
-
-report();
-
-#
-# 9. Verify getppriv() works.
-#
-my %psets;
-foreach my $s (keys %PRIVSETS)
-{
-	$errs++ unless ($psets{$s} = getppriv($s));
-}
-report();
-
-#
-# 10. Verify that we can reset those sets.
-#
-foreach my $s (keys %PRIVSETS)
-{
-	$errs++ unless (setppriv(PRIV_SET, $s, $psets{$s}));
-}
-report();
-
-#
-# 11. E/P/I manipulations.
-#
-$errs++ unless setppriv(PRIV_SET, PRIV_EFFECTIVE, priv_emptyset());
-$errs++ unless setppriv(PRIV_SET, PRIV_EFFECTIVE, getppriv(PRIV_PERMITTED));
-$errs++ unless setppriv(PRIV_SET, PRIV_INHERITABLE, priv_emptyset());
-$errs++ unless setppriv(PRIV_SET, PRIV_INHERITABLE, getppriv(PRIV_PERMITTED));
-report();
-#
-# 12. Fork()/exec() tests.  See if the setting the privileges actually
-# has an effect.
-#
-my $p;
-priv_delset($p = getppriv(PRIV_PERMITTED), PRIV_PROC_FORK);
-$errs++ unless setppriv(PRIV_SET, PRIV_EFFECTIVE, $p);
-
-my $fr = fork();
-
-# Child of a sucessful fork().
-exit if (defined($fr) && $fr == 0);
-
-$errs++ unless !defined $fr;
-
-# Exec test
-priv_addset($p, PRIV_PROC_FORK);
-priv_delset($p, PRIV_PROC_EXEC);
-$errs++ unless setppriv(PRIV_SET, PRIV_EFFECTIVE, $p);
-my $out = `echo foo 2>/dev/null`;
-$errs++ unless (!defined $out || $out eq "");
-
-# Restore E.
-$errs++ unless setppriv(PRIV_SET, PRIV_EFFECTIVE, getppriv(PRIV_PERMITTED));
-
-report();
-
-#
-# 13. Verify priv_str_to_set, priv_set_to_str
-#
-my $newset = priv_str_to_set(join(",", keys %PRIVILEGES), ",");
-map { $errs++ if (!priv_ismember($newset, $_)); } keys %PRIVILEGES;
-
-$newset = priv_str_to_set("all", ",");
-map { $errs++ if (!priv_ismember($newset, $_)); } keys %PRIVILEGES;
-
-$newset = priv_str_to_set("none", ",");
-map { $errs++ if (priv_ismember($newset, $_)); } keys %PRIVILEGES;
-
-foreach my $p (keys %PRIVILEGES)
-{
-	$newset = priv_str_to_set($PRIVILEGES{$p}, ",");
-	$errs++ if (!priv_ismember($newset, $p));
-	$errs++ if (priv_ismember(priv_inverse($newset), $p));
-}
-
-foreach my $p (keys %PRIVILEGES)
-{
-	$newset = priv_str_to_set("all,!" . $PRIVILEGES{$p}, ",");
-	$errs++ if (priv_ismember($newset, $p));
-	foreach my $p2 (keys %PRIVILEGES)
-	{
-		next if ($p eq $p2);
-		$errs++ if (!priv_ismember($newset, $p2));
-		$errs++ if (priv_ismember(priv_inverse($newset), $p2));
-	}
-}
-report();
-
-#
-# 14. Check whether PRIV_SET, PRIV_ON, PRIV_OFF work.
-#
-my $perm;
-my @ours = split(/,/,
-    priv_set_to_str($perm = getppriv(PRIV_PERMITTED), ",", PRIV_STR_LIT));
-my $set = priv_emptyset();
-
-
-$errs++ unless (setppriv(PRIV_SET, PRIV_EFFECTIVE, $perm));
-priv_addset($set, $ours[0]);
-$errs++ unless (setppriv(PRIV_OFF, PRIV_EFFECTIVE, $set));
-my $new = getppriv(PRIV_EFFECTIVE);
-
-# The new set should be equal to the $perm minus the priv set in $set.
-my $temp = priv_intersect($perm, priv_inverse($set));
-$errs++ unless (priv_isequalset($temp, $new));
-
-# Set the single bit back on.
-$errs++ unless (setppriv(PRIV_ON, PRIV_EFFECTIVE, $set));
-$new = getppriv(PRIV_EFFECTIVE);
-$errs++ unless (priv_isequalset($perm, $new));
-
-# Set the set
-$errs++ unless (setppriv(PRIV_SET, PRIV_EFFECTIVE, $set));
-$new = getppriv(PRIV_EFFECTIVE);
-$errs++ unless (priv_isequalset($set, $new));
-
-# Clear the set
-$errs++ unless (setppriv(PRIV_OFF, PRIV_EFFECTIVE, $set));
-$new = getppriv(PRIV_EFFECTIVE);
-$errs++ unless (priv_isemptyset( $new));
-
-# Set the single bit back on.
-$errs++ unless (setppriv(PRIV_ON, PRIV_EFFECTIVE, $set));
-$new = getppriv(PRIV_EFFECTIVE);
-$errs++ unless (priv_isequalset($set, $new));
-
-report();
-
-#
-# 15. We should be privilege aware by now.
-#
-$errs++ unless (getpflags(PRIV_AWARE) == 1);
-report();
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Privilege/typemap	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,28 +0,0 @@
-#
-# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
-#
-
-TYPEMAP
-	const char *					T_PV
-	const char **					T_PV
-	priv_op_t					T_IV
-	boolean_t					T_IV
-	uint_t						T_IV
-	sysret						T_SYSRET
-	Sun::Solaris::Privilege::Privset *		T_PTROBJ
-
-INPUT
-
-OUTPUT
-#
-# System call return.
-#
-T_SYSRET
-	{
-		if ($var != -1) {
-			if ($var == 0)
-				sv_setpvn($arg, "0 but true", 10);
-			else
-				sv_setiv($arg, (IV)$var);
-		}
-	}
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Project/MANIFEST	Tue Apr 22 05:37:43 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,9 +0,0 @@
-Changes
-Makefile.PL
-MANIFEST
-pod/Project.pod
-Project.pm
-Project.xs
-README
-t/Project.t
-typemap
--- /dev/null	Tue Apr 22 05:37:43 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Project/Makefile	Tue Apr 22 05:37:43 2014
@@ -0,0 +1,37 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright (c) 2014 Racktop Systems.
+# Copyright 2014, OmniTI Computer Consulting, Inc. All rights reserved.
+#
+
+MODULE = Project
+
+include $(SRC)/cmd/perl/Makefile.perl
+
+LDLIBS += -lproject -lgen
+
+CERRWARN += -_gcc=-Wno-unused-variable
+
+XSUBPPFLAGS = -typemap typemap
+
+MAPFILES = mapfile-vers
+
+include $(SRC)/cmd/perl/Makefile.targ
+
+.KEEP_STATE:
+
+all: $(PERLEXT) $(PERLMOD) $(PERLEXT64)
+
+install: $(ROOTPERLEXT) $(ROOTPERLMOD) $(ROOTPERLEXT64) $(ROOTPERLMOD64)
+
+clean clobber:
+	$(RM) -r $(MACH) $(MACH64)
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Project/Makefile.PL	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:43 2014
@@ -1,68 +0,0 @@
-#
-# Copyright (c) 1999, 2008 Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Makefile.PL for ::Project
-#
-
-require 5.8.4;
-use strict;
-use warnings;
-use ExtUtils::MakeMaker;
-
-# #defines.
-my @defines = ( DEFINE => exists($ENV{RELEASE_BUILD}) ? '-DNDEBUG' : '' );
-
-# List of POD pages to install.
-my @man3pods = ( MAN3PODS => {} );
-
-#
-# If not building as part of ON.
-#
-if (! exists($ENV{CODEMGR_WS})) {
-
-	#
-	# Suppress the setting of LD_RUN_PATH.  The ON build environment
-	# contains a modified MakeMaker that does this automatically, so we
-	# only need to do this if we are building outside of ON.
-	#
-	package MY;
-	no warnings qw(once);
-
-	# Override const_loadlibs to remove LD_RUN_PATH cruft.
-	*const_loadlibs = sub
-	{
-		my $self = shift(@_);
-		delete($self->{LD_RUN_PATH});
-		return($self->SUPER::const_loadlibs(@_));
-	};
-
-	# Override dynamic_lib to get rid of LD_RUN_PATH cruft.
-	*dynamic_lib = sub
-	{
-		my $self = shift(@_);
-		my $txt = $self->SUPER::dynamic_lib(@_);
-		$txt =~ s/LD_RUN_PATH=\S*\s*//;
-		return($txt);
-	};
-
-	# Turn off debugging.
-	@defines = ();
-
-	#
-	# Install the POD documentation for non-ON builds.
-	#
-	my $man3pfx = '$(INST_MAN3DIR)/Sun::Solaris::Project';
-	@man3pods = (
-	    MAN3PODS => { 'pod/Project.pod' => $man3pfx . '.$(MAN3EXT)' }
-	);
-}
-
-WriteMakefile(
-    NAME         => 'Sun::Solaris::Project',
-    VERSION_FROM => 'Project.pm',
-     LIBS         => '-lproject -lgen',
-    @defines,
-    @man3pods,
-);
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Project/Project.pm	Tue Apr 22 05:37:44 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Project/Project.pm	Tue Apr 22 05:37:44 2014
@@ -1,5 +1,6 @@
 #
 # Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014 Racktop Systems.
 #
 
 #
@@ -8,7 +9,7 @@
 # files.
 #
 ################################################################################
-require 5.8.4;
+require 5.0010;
 
 use strict;
 use warnings;
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Project/Project.xs	Tue Apr 22 05:37:44 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Project/Project.xs	Tue Apr 22 05:37:44 2014
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014 Racktop Systems.
  */
 /*
  * Project.xs contains XS wrappers for the project database maniplulation
@@ -160,7 +161,7 @@
 	char		buf[PROJECT_BUFSZ];
 PPCODE:
 	PUTBACK;
-	if (projp = getprojent(&proj, buf, sizeof (buf))) {
+	if ((projp = getprojent(&proj, buf, sizeof (buf)))) {
 		XSRETURN(pushret_project(projp));
 	} else {
 		XSRETURN_EMPTY;
@@ -180,7 +181,7 @@
 	char		buf[PROJECT_BUFSZ];
 PPCODE:
 	PUTBACK;
-	if (projp = getprojbyname(name, &proj, buf, sizeof (buf))) {
+	if ((projp = getprojbyname(name, &proj, buf, sizeof (buf)))) {
 		XSRETURN(pushret_project(projp));
 	} else {
 		XSRETURN_EMPTY;
@@ -194,7 +195,7 @@
 	char		buf[PROJECT_BUFSZ];
 PPCODE:
 	PUTBACK;
-	if (projp = getprojbyid(id, &proj, buf, sizeof (buf))) {
+	if ((projp = getprojbyid(id, &proj, buf, sizeof (buf)))) {
 		XSRETURN(pushret_project(projp));
 	} else {
 		XSRETURN_EMPTY;
@@ -208,7 +209,7 @@
 	char		buf[PROJECT_BUFSZ];
 PPCODE:
 	PUTBACK;
-	if (projp = getdefaultproj(user, &proj, buf, sizeof (buf))) {
+	if ((projp = getdefaultproj(user, &proj, buf, sizeof (buf)))) {
 		XSRETURN(pushret_project(projp));
 	} else {
 		XSRETURN_EMPTY;
@@ -222,7 +223,7 @@
 	char		buf[PROJECT_BUFSZ];
 PPCODE:
 	PUTBACK;
-	if (projp = fgetprojent(fh, &proj, buf, sizeof (buf))) {
+	if ((projp = fgetprojent(fh, &proj, buf, sizeof (buf)))) {
 		XSRETURN(pushret_project(projp));
 	} else {
 		XSRETURN_EMPTY;
@@ -270,7 +271,7 @@
 	rctlblk_t *tmp = NULL;
 	rctl_priv_t priv;
 	rctl_qty_t value;
-	int flags;
+	int flags = 0;
 	int ret;
 	int err = 0;
 	char string[24];	/* 24 will always hold a uint64_t */
--- /dev/null	Tue Apr 22 05:37:44 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Project/mapfile-vers	Tue Apr 22 05:37:44 2014
@@ -0,0 +1,36 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright (c) 2014 Racktop Systems.
+#
+
+$mapfile_version 2
+
+SYMBOL_SCOPE {
+    global:
+	boot_Sun__Solaris__Project;
+	XS_Sun__Solaris__Project_activeprojects;
+	XS_Sun__Solaris__Project_endprojent;
+	XS_Sun__Solaris__Project_fgetprojent;
+	XS_Sun__Solaris__Project_getdefaultproj;
+	XS_Sun__Solaris__Project_getprojbyid;
+	XS_Sun__Solaris__Project_getprojbyname;
+	XS_Sun__Solaris__Project_getprojent;
+	XS_Sun__Solaris__Project_getprojid;
+	XS_Sun__Solaris__Project_getprojidbyname;
+	XS_Sun__Solaris__Project_inproj;
+	XS_Sun__Solaris__Project_pool_exists;
+	XS_Sun__Solaris__Project_rctl_get_info;
+	XS_Sun__Solaris__Project_setproject;
+	XS_Sun__Solaris__Project_setprojent;
+    local:
+	*;
+};
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Task/MANIFEST	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,8 +0,0 @@
-Changes
-Makefile.PL
-MANIFEST
-pod/Task.pod
-README
-Task.pm
-Task.xs
-typemap
--- /dev/null	Tue Apr 22 05:37:44 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Task/Makefile	Tue Apr 22 05:37:44 2014
@@ -0,0 +1,33 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright (c) 2014 Racktop Systems.
+# Copyright 2014, OmniTI Computer Consulting, Inc. All rights reserved.
+#
+
+MODULE = Task
+
+include $(SRC)/cmd/perl/Makefile.perl
+
+XSUBPPFLAGS = -typemap typemap
+
+MAPFILES = mapfile-vers
+
+include $(SRC)/cmd/perl/Makefile.targ
+
+.KEEP_STATE:
+
+all: $(PERLEXT) $(PERLMOD) $(PERLEXT64)
+
+install: $(ROOTPERLEXT) $(ROOTPERLMOD) $(ROOTPERLEXT64) $(ROOTPERLMOD64)
+
+clean clobber:
+	$(RM) -r $(MACH) $(MACH64)
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Task/Makefile.PL	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,67 +0,0 @@
-#
-# Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Makefile.PL for ::Task
-#
-
-require 5.8.4;
-use strict;
-use warnings;
-use ExtUtils::MakeMaker;
-
-# #defines.
-my @defines = ( DEFINE => exists($ENV{RELEASE_BUILD}) ? '-DNDEBUG' : '' );
-
-# List of POD pages to install.
-my @man3pods = ( MAN3PODS => {} );
-
-#
-# If not building as part of ON.
-#
-if (! exists($ENV{CODEMGR_WS})) {
-
-	#
-	# Suppress the setting of LD_RUN_PATH.  The ON build environment
-	# contains a modified MakeMaker that does this automatically, so we
-	# only need to do this if we are building outside of ON.
-	#
-	package MY;
-	no warnings qw(once);
-
-	# Override const_loadlibs to remove LD_RUN_PATH cruft.
-	*const_loadlibs = sub
-	{
-		my $self = shift(@_);
-		delete($self->{LD_RUN_PATH});
-		return($self->SUPER::const_loadlibs(@_));
-	};
-
-	# Override dynamic_lib to get rid of LD_RUN_PATH cruft.
-	*dynamic_lib = sub
-	{
-		my $self = shift(@_);
-		my $txt = $self->SUPER::dynamic_lib(@_);
-		$txt =~ s/LD_RUN_PATH=\S*\s*//;
-		return($txt);
-	};
-
-	# Turn off debugging.
-	@defines = ();
-
-	#
-	# Install the POD documentation for non-ON builds.
-	#
-	my $man3pfx = '$(INST_MAN3DIR)/Sun::Solaris::Task';
-	@man3pods = (
-	    MAN3PODS => { 'pod/Task.pod' => $man3pfx . '.$(MAN3EXT)' }
-	);
-}
-
-WriteMakefile(
-    NAME	 => 'Sun::Solaris::Task',
-    VERSION_FROM => 'Task.pm',
-    @defines,
-    @man3pods,
-);
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Task/Task.pm	Tue Apr 22 05:37:44 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Task/Task.pm	Tue Apr 22 05:37:44 2014
@@ -1,5 +1,6 @@
 #
 # Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2014 Racktop Systems.
 #
 
 #
@@ -6,7 +7,7 @@
 # Task.pm provides the bootstrap for the Sun::Solaris::Task module.
 #
 
-require 5.8.4;
+require 5.0010;
 use strict;
 use warnings;
 
--- /dev/null	Tue Apr 22 05:37:44 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Task/mapfile-vers	Tue Apr 22 05:37:44 2014
@@ -0,0 +1,24 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright (c) 2014 Racktop Systems.
+#
+
+$mapfile_version 2
+
+SYMBOL_SCOPE {
+    global:
+	boot_Sun__Solaris__Task;
+	XS_Sun__Solaris__Task_gettaskid;
+	XS_Sun__Solaris__Task_settaskid;
+    local:
+	*;
+};
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/Changes	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,6 +0,0 @@
-#
-# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
-#
-
-Version 1.1
-Initial Public Source release.
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/MANIFEST	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,15 +0,0 @@
-#
-# Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-#ident	"%Z%%M%	%I%	%E% SMI"
-#
-Changes
-MANIFEST
-Makefile.PL
-README
-Ucred.pm
-Ucred.xs
-pod/Ucred.pod
-t/Ucred.t
-typemap
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/Makefile.PL	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,69 +0,0 @@
-#
-# Copyright (c) 2004, 2008 Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Makefile.PL for ::Ucred
-#
-
-require 5.8.4;
-use strict;
-use warnings;
-use ExtUtils::MakeMaker;
-
-# #defines.
-my @defines = ( DEFINE => exists($ENV{RELEASE_BUILD}) ? '-DNDEBUG' : '' );
-
-# List of POD pages to install.
-my @man3pods = ( MAN3PODS => {} );
-
-#
-# If not building as part of ON.
-#
-if (! exists($ENV{ENVCPPFLAGS1})) {
-
-	#
-	# Suppress the setting of LD_RUN_PATH.  The ON build environment
-	# contains a modified MakeMaker that does this automatically, so we
-	# only need to do this if we are building outside of ON.
-	#
-	package MY;
-	no warnings qw(once);
-
-	# Override const_loadlibs to remove LD_RUN_PATH cruft.
-	*const_loadlibs = sub
-	{
-		my $self = shift(@_);
-		delete($self->{LD_RUN_PATH});
-		return($self->SUPER::const_loadlibs(@_));
-	};
-
-	# Override dynamic_lib to get rid of LD_RUN_PATH cruft.
-	*dynamic_lib = sub
-	{
-		my $self = shift(@_);
-		my $txt = $self->SUPER::dynamic_lib(@_);
-		$txt =~ s/LD_RUN_PATH=\S*\s*//;
-		return($txt);
-	};
-
-	# Turn off debugging.
-	@defines = ();
-
-	#
-	# Install the POD documentation for non-ON builds.
-	#
-	my $man3pfx = '$(INST_MAN3DIR)/Sun::Solaris::Ucred';
-	@man3pods = (
-	    MAN3PODS => { 'pod/Ucred.pod' => $man3pfx . '.$(MAN3EXT)' }
-	);
-}
-
-WriteMakefile(
-    NAME         => 'Sun::Solaris::Ucred',
-    VERSION_FROM => 'Ucred.pm',
-    #PREREQ_PM    => { 'Sun::Solaris::Privilege' => '1.1' },
-
-    @defines,
-    @man3pods,
-);
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/README	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,27 +0,0 @@
-#
-# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
-#
-
-Licensing
----------
-This module is released under the Perl Artistic License.
-
-Availability
-------------
-This module is only available for Solaris 10 onwards.
-
-Description
------------
-This module provides access to the Solaris Ucred subsystem.
-
-See getpeerucred(3C), ucred_get(3C).
-
-Installation
-------------
-
-1. Uncompress and untar the archive
-2. cd to the module directory
-3. perl Makefile.PL; make install
-
-If you are using gcc and wish to build this module against the perl shipped as
-part of Solaris, see the Solaris-PerlGcc module, also available from CPAN.
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/Ucred.pm	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,36 +0,0 @@
-#
-# Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Ucred.pm provides the bootstrap for the Sun::Solaris::Ucred module.
-#
-
-require 5.8.4;
-use strict;
-use warnings;
-
-package Sun::Solaris::Ucred;
-
-our $VERSION = '1.3';
-use XSLoader;
-XSLoader::load(__PACKAGE__, $VERSION);
-
-our (@EXPORT_OK, %EXPORT_TAGS);
-my @syscalls = qw(getpeerucred ucred_get);
-my @libcalls = qw(ucred_geteuid ucred_getruid ucred_getsuid ucred_getegid
-	ucred_getrgid ucred_getsgid ucred_getgroups ucred_getprivset
-	ucred_getpflags ucred_getpid ucred_getzoneid ucred_getprojid);
-
-@EXPORT_OK = (@syscalls, @libcalls);
-%EXPORT_TAGS = (SYSCALLS => \@syscalls, LIBCALLS => \@libcalls,
-		ALL => \@EXPORT_OK);
-
-require Exporter;
-
-use base qw(Exporter Sun::Solaris::Privilege);
-
-use Sun::Solaris::Utils qw(gettext);
-
-1;
-__END__
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/Ucred.xs	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,160 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- */
-/*
- * Ucred.xs contains XS wrappers for the process privilege maniplulation
- * functions.
- */
-
-
-/* Solaris includes. */
-#include <ucred.h>
-#include <priv.h>
-
-/* Perl includes. */
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-typedef int sysret;
-typedef priv_set_t Sun__Solaris__Privilege__Privset;
-typedef ucred_t Sun__Solaris__Ucred__Ucred;
-
-static priv_set_t *
-dupset(const priv_set_t *s)
-{
-	priv_set_t *new = priv_allocset();
-	if (new == NULL)
-		return (NULL);
-
-	priv_copyset(s, new);
-	return (new);
-}
-
-/*
- * The XS code exported to perl is below here.  Note that the XS preprocessor
- * has its own commenting syntax, so all comments from this point on are in
- * that form.
- */
-
-MODULE = Sun::Solaris::Ucred PACKAGE = Sun::Solaris::Ucred
-PROTOTYPES: ENABLE
-
-Sun::Solaris::Ucred::Ucred *
-ucred_get(pid);
-	pid_t pid;
-
-uid_t
-ucred_geteuid(uc)
-	Sun::Solaris::Ucred::Ucred *uc;
-
-uid_t
-ucred_getruid(uc)
-	Sun::Solaris::Ucred::Ucred *uc;
-
-uid_t
-ucred_getsuid(uc)
-	Sun::Solaris::Ucred::Ucred *uc;
-
-gid_t
-ucred_getegid(uc)
-	Sun::Solaris::Ucred::Ucred *uc;
-
-gid_t
-ucred_getrgid(uc)
-	Sun::Solaris::Ucred::Ucred *uc;
-
-gid_t
-ucred_getsgid(uc)
-	Sun::Solaris::Ucred::Ucred *uc;
-
-pid_t
-ucred_getpid(uc)
-	Sun::Solaris::Ucred::Ucred *uc;
-
-zoneid_t
-ucred_getzoneid(uc)
-	Sun::Solaris::Ucred::Ucred *uc;
-
-projid_t
-ucred_getprojid(uc)
-	Sun::Solaris::Ucred::Ucred *uc;
-
-uint_t
-ucred_getpflags(uc, flags)
-	Sun::Solaris::Ucred::Ucred *uc;
-	uint_t flags;
-
-Sun::Solaris::Privilege::Privset *
-ucred_getprivset(uc, which)
-	Sun::Solaris::Ucred::Ucred *uc;
-	const char *which;
-PREINIT:
-	const priv_set_t *val;
-CODE:
-	/*
-	 * Since this function returns a pointer into the ucred_t, we need
-	 * to copy it or perl may free one before the other; and the
-	 * priv_set_t * returned by it doesn't react kindly to free().
-	 */
-	val = ucred_getprivset(uc, which);
-	if (val == NULL || (RETVAL = dupset(val)) == NULL)
-		XSRETURN_UNDEF;
-OUTPUT:
-	RETVAL
-CLEANUP:
-	SvREADONLY_on(SvRV(ST(0)));
-
-Sun::Solaris::Ucred::Ucred *
-getpeerucred(fd)
-	int fd;
-CODE:
-	RETVAL = NULL;
-	if (getpeerucred(fd, &RETVAL) != 0)
-		XSRETURN_UNDEF;
-OUTPUT:
-	RETVAL
-CLEANUP:
-	SvREADONLY_on(SvRV(ST(0)));
-
-void
-ucred_getgroups(uc)
-	Sun::Solaris::Ucred::Ucred *uc;
-PREINIT:
-	const gid_t *gids;
-	int n;
-PPCODE:
-	n = ucred_getgroups(uc, &gids);
-	if (n < 0)
-		XSRETURN_UNDEF;
-
-	PUTBACK;
-	if (GIMME_V == G_SCALAR) {
-		EXTEND(SP, 1);
-		PUSHs(sv_2mortal(newSViv(n)));
-		PUTBACK;
-		XSRETURN(1);
-	} else if (GIMME_V == G_ARRAY) {
-		int i;
-		EXTEND(SP, n);
-
-		for (i = 0; i < n; i++)
-			PUSHs(sv_2mortal(newSViv(gids[i])));
-		PUTBACK;
-		XSRETURN(n);
-	} else {
-		PUTBACK;
-		XSRETURN(0);
-	}
-
-
-
-
-MODULE = Sun::Solaris::Ucred PACKAGE = Sun::Solaris::Ucred::UcredPtr PREFIX = Ucred_
-
-void
-Ucred_DESTROY(uc)
-	Sun::Solaris::Ucred::Ucred *uc;
-CODE:
-	ucred_free(uc);
-
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/pod/Ucred.pod	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,127 +0,0 @@
-#
-# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# Sun::Solaris::Ucred documentation.
-# 
-
-=head1 NAME
-
-Sun::Solaris::Ucred - Perl interface to User Credentials
-
-=head1 SYNOPSIS
-
- use Sun::Solaris::Ucred qw(:ALL);
-
-This module provides wrappers for the Ucred-related system and
-library calls.
-
-=head2 Functions
-
-B<C<ucred_get($pid)>>
-
-This function returns the credential of the process specified by $pid,
-if the process exists and the calling process is permitted to obtain
-the credentials of that process.
-
-B<C<getpeerucred($fd)>>
-
-If $fd is a connected connection oriented TLI endpoint, a connected
-SOCK_STREAM or SOCK_SEQPKT socket, getpeerucred will return the user
-credential of the peer at the time the connection was established,
-if availble.
-
-B<C<ucred_geteuid($ucred)>>
-
-This function returns the effective uid of a user credential, if available.
-
-B<C<ucred_getruid($ucred)>>
-
-This function returns the real uid of a user credential, if available.
-
-B<C<ucred_getsuid($ucred)>>
-
-This function returns the saved uid of a user credential, if available.
-
-B<C<ucred_getegid($ucred)>>
-
-This function returns the effective group of a user credential, if available.
-
-B<C<ucred_getrgid($ucred)>>
-
-This function returns the real group of a user credential, if available.
-
-B<C<ucred_getsgid($ucred)>>
-
-This function returns the saved group of a user credential, if available.
-
-B<C<ucred_getgroups($ucred)>>
-
-This function returns the list of supplemental groups of a user
-credential, if available.  An array of groups is returned in ARRAY
-context; the number of groups is returned in SCALAR context.
-
-B<C<ucred_getprivset($ucred, $which)>>
-
-This function returns the privilege set specified by $which of a user
-credential, if available.
-
-B<C<ucred_getpflags($ucred, $flags)>>
-
-This function returns the value of a specific process flag of a user
-credential, if available.
-
-B<C<ucred_getpid($ucred)>>
-
-This function returns the process id of a user credential, if available.
-
-B<C<ucred_getzoneid($ucred)>>
-
-This function returns the zone id of a user credential, if available.
-
-B<C<ucred_getprojid($ucred)>>
-
-This function returns the project id of a user credential, if available.
-
-=head2 Class methods
-
-None.
-
-=head2 Object methods
-
-None.
-
-=head2 Exports
-
-By default nothing is exported from this module. The following tags can be
-used to selectively import constants and functions defined in this module:
-
- :SYSCALLS    ucred_get(), getpeerucred()
-
- :LIBCALLS    ucred_geteuid(), ucred_getruid(), ucred_getsuid(),
-	      ucred_getegid(), ucred_getrgid(), ucred_getsgid(),
-	      ucred_getgroups(), ucred_getprivset(), ucred_getpflags(),
-	      ucred_getpid(), ucred_getzoneid(), ucred_getprojid()
-
- :CONSTANTS
-
- :VARIABLES   %PRIVILEGES, %PRIVSETS
-
- :ALL         :SYSCALLS, :LIBCALLS, and :CONSTANTS
-
-=head1 ATTRIBUTES
-
-See C<attributes(5)> for descriptions of the following attributes:
-
-  ___________________________________________________________
- |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
- |_____________________________|_____________________________|
- | Availability                | CPAN (http://www.cpan.org)  |
- |_____________________________|_____________________________|
- | Interface Stability         | Evolving                    |
- |_____________________________|_____________________________|
-
-=head1 SEE ALSO
-
-C<getpeerucred(2)>, C<ucred_get(3C)>, C<attributes(5)>
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/t/Ucred.t	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,179 +0,0 @@
-#
-# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
-#
-
-#
-# test script for Sun::Solaris::Ucred
-#
-
-$^W = 1;
-use strict;
-use Data::Dumper;
-use English;
-$Data::Dumper::Terse = 1;
-$Data::Dumper::Indent = 0;
-
-
-use Sun::Solaris::Privilege qw(:ALL);
-use Sun::Solaris::Project qw(:ALL);
-
-#
-# Status reporting utils
-#
-
-use vars qw($test);
-$test = 1;
-
-sub pass
-{
-	print("ok $test $@\n");
-	$test++;
-}
-
-sub fail
-{
-	print("not ok $test $@\n");
-	$test++;
-}
-
-sub fatal
-{
-	print("not ok $test $@\n");
-	exit(1);
-}
-
-my $errs;
-
-sub report
-{
-	if ($errs) {
-		fail();
-	} else {
-		pass();
-	}
-	$errs = 0;
-}
-
-sub ucred_verify
-{
-	my ($ucred) = @_;
-
-	my $pid = ucred_getpid($ucred);
-
-	$errs++ unless (!defined $pid || $pid == $$);
-	$errs++ unless (ucred_geteuid($ucred) == $EUID);
-	$errs++ unless (ucred_getruid($ucred) == $UID);
-	$errs++ unless (ucred_getegid($ucred) == $EGID);
-	$errs++ unless (ucred_getrgid($ucred) == $GID);
-	$errs++ unless (ucred_getprojid($ucred) == getprojid());
-	foreach my $f (PRIV_AWARE, PRIV_DEBUG) {
-		$errs++ unless (ucred_getpflags($ucred, $f) == getpflags($f));
-	}
-
-	# Get a sorted list of groups; the real gid is first and we need
-	# to shift that one out of the way first.
-	my @gr = split(/\s+/, $();
-	shift @gr;
-	@gr = sort {$a <=> $b} (@gr);
-	my @ucgr = sort {$a <=> $b} ucred_getgroups($ucred);
-
-	$errs++ unless ("@gr" eq "@ucgr");
-
-	foreach my $s (keys %PRIVSETS) {
-		my $set = ucred_getprivset($ucred, $s);
-		$errs++ unless priv_isequalset($set, getppriv($s));
-	}
-}
-
-#
-# Main body of tests starts here
-#
-
-my ($loaded, $line) = (1, 0);
-my $fh = do { local *FH; *FH; };
-
-#
-# 1. Check the module loads
-#
-BEGIN { $| = 1; print "1..5\n"; }
-END   { print "not ok 1\n" unless $loaded; }
-use Sun::Solaris::Ucred qw(:ALL);
-$loaded = 1;
-pass();
-
-#
-# 2. ucred_get works.
-#
-
-my $ucred = ucred_get($$);
-
-$errs++ unless defined $ucred;
-
-report();
-
-#
-# 3. Returned ucred matches perl's idea of the process' credentials.
-#
-if (defined $ucred) {
-	ucred_verify($ucred);
-}
-report();
-
-#
-# 4. Create a socketpair; make sure that the ucred returned
-# is mine.
-#
-
-use IO::Socket::UNIX;
-
-my ($unix) = new IO::Socket::UNIX;
-my ($s1, $s2) = $unix->socketpair(AF_UNIX, SOCK_STREAM, 0);
-
-if ($ucred = getpeerucred(fileno($s1))) {
-	ucred_verify($ucred);
-} else {
-	$errs++;
-}
-close($s1);
-close($s2);
-
-($s1, $s2) = $unix->socketpair(AF_UNIX, SOCK_SEQPACKET, 0);
-
-if ($ucred = getpeerucred(fileno($s1))) {
-	ucred_verify($ucred);
-} else {
-	$errs++;
-}
-close($s1);
-close($s2);
-report();
-
-#
-# 5. Create a AF_INET loopback connected socket and call getpeerucred().
-#
-use IO::Socket::INET;
-
-my $inet = new IO::Socket::INET;
-
-$s1 = $inet->socket(AF_INET, SOCK_STREAM, 0);
-$inet = new IO::Socket::INET;
-$s2 = $inet->socket(AF_INET, SOCK_STREAM, 0);
-
-$s1->bind(0, inet_aton("localhost"));
-$s1->listen(0);
-
-$s2->connect($s1->sockname);
-my $s3 = $s1->accept();
-
-# getpeerucred on the accepter should fail
-$errs++ if getpeerucred(fileno($s1));
-# but on the other two it should succeed.
-
-foreach my $s ($s2, $s3) {
-	if ($ucred = getpeerucred(fileno($s))) {
-		ucred_verify($ucred);
-	} else {
-		$errs++;
-	}
-}
-report();
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Ucred/typemap	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,44 +0,0 @@
-#
-# Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
-#
-
-TYPEMAP
-	Sun::Solaris::Privilege::Privset *	T_PTROBJ
-	Sun::Solaris::Ucred::Ucred *		T_PTROBJ
-	const char *				T_PV
-	const char **				T_PV
-	priv_op_t				T_IV
-	uint_t					T_IV
-	boolean_t				T_IV
-	uid_t					T_ID_T
-	gid_t					T_ID_T
-	pid_t					T_ID_T
-	zoneid_t				T_ID_T
-	projid_t				T_ID_T
-	sysret					T_SYSRET
-
-INPUT
-
-T_ID_T
-	 $var = (int)SvIV($arg)
-
-OUTPUT
-T_SYSRET
-	{
-		if ($var != -1) {
-			if ($var == 0)
-				sv_setpvn($arg, "0 but true", 10);
-			else
-				sv_setiv($arg, (IV)$var);
-		}
-	}
-
-T_ID_T
-	{
-		if ($var != -1) {
-			if ($var == 0)
-				sv_setpvn($arg, "0 but true", 10);
-			else
-				sv_setiv($arg, (IV)$var);
-		}
-	}
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Utils/MANIFEST	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,4 +0,0 @@
-Makefile.PL
-Utils.pm
-Utils.xs
-t/gmatch.t
--- /dev/null	Tue Apr 22 05:37:44 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Utils/Makefile	Tue Apr 22 05:37:44 2014
@@ -0,0 +1,31 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright (c) 2014 Racktop Systems.
+# Copyright 2014, OmniTI Computer Consulting, Inc. All rights reserved.
+#
+
+MODULE = Utils
+
+include $(SRC)/cmd/perl/Makefile.perl
+
+MAPFILES = mapfile-vers
+
+include $(SRC)/cmd/perl/Makefile.targ
+
+.KEEP_STATE:
+
+all: $(PERLEXT) $(PERLMOD) $(PERLEXT64)
+
+install: $(ROOTPERLEXT) $(ROOTPERLMOD) $(ROOTPERLEXT64) $(ROOTPERLMOD64)
+
+clean clobber:
+	$(RM) -r $(MACH) $(MACH64)
--- old/usr/src/cmd/perl/contrib/Sun/Solaris/Utils/Makefile.PL	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,38 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License, Version 1.0 only
-# (the "License").  You may not use this file except in compliance
-# with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-# Copyright (c) 1999, 2001 by Sun Microsystems, Inc.
-# All rights reserved.
-#
-#ident	"%Z%%M%	%I%	%E% SMI"
-#
-# cmd/perl/contrib/Sun/Solaris/Utils/Makefile.PL
-#
-
-use ExtUtils::MakeMaker;
-
-WriteMakefile(
-   NAME         => 'Sun::Solaris::Utils',
-   VERSION_FROM => 'Utils.pm',
-   LIBS         => [ '-lgen -lintl' ],
-   OBJECT       => '$(O_FILES)',
-);
--- /dev/null	Tue Apr 22 05:37:44 2014
+++ new/usr/src/cmd/perl/contrib/Sun/Solaris/Utils/mapfile-vers	Tue Apr 22 05:37:44 2014
@@ -0,0 +1,28 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright (c) 2014 Racktop Systems.
+#
+
+$mapfile_version 2
+
+SYMBOL_SCOPE {
+    global:
+	boot_Sun__Solaris__Utils;
+	XS_Sun__Solaris__Utils_bindtextdomain;
+	XS_Sun__Solaris__Utils_dcgettext;
+	XS_Sun__Solaris__Utils_dgettext;
+	XS_Sun__Solaris__Utils_gettext;
+	XS_Sun__Solaris__Utils_gmatch;
+	XS_Sun__Solaris__Utils_textdomain;
+    local:
+	*;
+};
--- old/usr/src/cmd/perl/contrib/copy_contrib.sh	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,108 +0,0 @@
-#!/bin/ksh -p
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# ident	"%Z%%M%	%I%	%E% SMI"
-#
-
-#
-# Because we build more than one copy of perl at the same time we need each
-# to have its own copy of the contrib subdirectory so that the concurrent
-# builds don't interfere with each other.  Rather than duplicating the contents
-# of the contrib directory under each version of perl we copy the clearfiles
-# from usr/src/cmd/perl/contrib to the appropriate build directory, taking
-# care only to do the copy if necessary so as not to cause unnecessary rebuilds.
-#
-
-function usage
-{
-	printf 'copy_contrib: usage is <src dir> <dst dir> <module> ...\n'
-	exit 1
-}
-
-# Check arguments.
-typeset -r src=$1
-typeset -r dst=$2
-[[ $src = $dst || ! ( -d $src && -d $dst ) ]] && usage
-shift 2
-typeset -r modules=$*
-[[ -z $modules ]] && usage
-typeset -r pwd=$PWD
-
-#
-# Make sure all the modules have the necessary clearfiles fetched,
-# but only if we have SCCS files (not true for the source product).
-#
-for dir in $(cd $src && find $modules -type d -name SCCS); do
-	dir=${dir%/SCCS}
-	cd $src/$dir
-	for file in SCCS/s.*; do
-		file=${file#SCCS/s\.}
-		if [[ ! ( -f $file || -f SCCS/p.$file ) ]]; then
-			set -e
-			printf 'sccs get %s/%s\n' $dir $file 
-			sccs get $file
-			set +e
-		fi
-	done
-	cd $pwd
-done
-
-#
-# Now copy all the clearfiles over to the destination directory, but only if
-# the destination file doesn't exist or is older than the source file.
-# Note we also ignore the Teamware req.flg and inc.flg files, to prevent
-# Teamware bringover and putback warning about them not being in SCCS.
-#
-
-for obj in $(cd $src && find $modules -name SCCS -prune -o -print); do
-	# Handle directories.
-	if [[ -d $src/$obj ]]; then
-		# Create destination directory if required.
-		if [[ ! -d $dst/$obj ]]; then
-			set -e
-			printf 'mkdir -p %s/%s\n' $dst $obj
-			mkdir -p $dst/$obj
-			set +e
-		fi
-		
-	# Handle plain files.
-	elif [[ -f $src/$obj ]]; then
-		if [[ $obj != */@(req|inc).flg && \
-		    $src/$obj -nt $dst/$obj ]]; then
-			set -e
-			rm -f $dst/$obj
-			printf 'cp -p %s/%s %s/%s\n' $src $obj $dst $obj
-			cp -p $src/$obj $dst/$obj
-			set +e
-		fi
-
-	# Anything else isn't handled.
-	else
-		printf 'copy_contrib: ERROR: unable to copy %s/%s' $src $obj
-		exit 1
-	fi
-done
-exit 0
--- old/usr/src/cmd/perl/req.flg	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,32 +0,0 @@
-#!/bin/sh
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-
-#
-# Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
-# Use is subject to license terms.
-#
-# ident	"%Z%%M%	%I%	%E% SMI"
-#
-
-echo_file usr/src/lib/Makefile.lib
-echo_file usr/src/lib/Makefile.targ
-find_files "s.*" usr/src/lib/common
--- old/usr/src/cmd/perl/skel/Makefile	Tue Apr 22 05:37:44 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,124 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
-#
-
-include ../../Makefile.cmd
-
-# To turn KEEP_STATE off the following two environment variables must be unset.
-KEEP_STATE_OFF = unset KEEP_STATE SUNPRO_DEPENDENCIES
-
-# Perl installs files we don't want to ship, so we install to a
-# staging area to postprocess and install the result to $(ROOT)
-STAGE = $(SRC)/cmd/perl/$(PERL_VERSION)-$(PERLARCH)/staging
-
-PERL=/bin/env ISALIST=$(PERLARCH) /usr/perl5/$(PERL_VERSION)/bin/$(PERLARCH)/perl
-
-PERL_MM_ARGS = INSTALLDIRS=perl CC='$(GCC_ROOT)/bin/gcc' LD='$(LD)'
-
-# Prefix for Solaris-specific extensions that are maintained by
-# Sun/Oracle.
-SUN_SOLARIS = Sun/Solaris
-
-# Add any XS extensions here.
-PERL_DYNAMIC_EXT = \
-    $(SUN_SOLARIS)/Utils \
-    $(SUN_SOLARIS)/Kstat \
-    $(SUN_SOLARIS)/Intrs \
-    $(SUN_SOLARIS)/Project \
-    $(SUN_SOLARIS)/Task \
-    $(SUN_SOLARIS)/Exacct \
-    $(SUN_SOLARIS)/Privilege \
-    $(SUN_SOLARIS)/Lgrp \
-    $(SUN_SOLARIS)/Ucred
-
-# Add any pure-perl extensions here.
-PERL_NONXS_EXT = \
-    $(SUN_SOLARIS)/BSM \
-    $(SUN_SOLARIS)/PerlGcc \
-    $(SUN_SOLARIS)/Pg
-
-PERL_EXT = $(PERL_DYNAMIC_EXT) $(PERL_NONXS_EXT)
-PERL_EXT_MAKEFILES = $(PERL_EXT:%=%/Makefile)
-
-all: copy_contrib $(PERL_EXT_MAKEFILES) $(PERL_EXT)
-
-.PARALLEL: $(PERL_EXT_MAKEFILES) $(PERL_EXT)
-
-install: all
-	for ext in $(PERL_EXT); do \
-		if [ -d $$ext ]; then \
-			( \
-			cd $$ext; pwd; \
-			$(KEEP_STATE_OFF); $(MAKE) $(PERL_MM_ARGS) \
-				DESTDIR=$(STAGE) install; \
-			cd $(STAGE); \
-			find . \( -name ".packlist" -o -name "perllocal.pod" \) \
-				-exec $(RM) {} \; ; \
-			/usr/bin/pax -rw -pe ./*  ${ROOT} ; \
-			) \
-		else \
-			/bin/false; \
-		fi \
-	done
-
-#
-# copy_contrib copies the clearfiles from ../contrib to here.
-#
-copy_contrib:
-	@ $(KSH93) ../contrib/copy_contrib.sh ../contrib . $(PERL_EXT)
-
-clean:
-	for ext in $(PERL_EXT); do \
-		if [ -d $$ext ]; then \
-			( \
-			cd $$ext; pwd; \
-			$(KEEP_STATE_OFF); $(MAKE) clean; \
-			) \
-		fi \
-	done
-
-# Remove Sun/Solaris
-clobber:
-	@ $(RM) -r Sun
-
-test: all
-	for ext in $(PERL_EXT); do \
-		( \
-		cd $$ext; pwd; \
-		$(KEEP_STATE_OFF); $(MAKE) test; \
-		) \
-	done
-
-#
-# Ensure that the extension's makefile is built before
-# trying to build the extension
-#
-%/Makefile: %/Makefile.PL $(PERL_CONFIGDEP)
-	@ cd $(@D); pwd; $(PERL) $(<F) $(PERL_MM_ARGS) 2>&1 /dev/null
-
-# Pattern-matching rule for extensions.
-$(SUN_SOLARIS)/%: $(SUN_SOLARIS)/%/Makefile FRC
-	@ cd $@; pwd; $(KEEP_STATE_OFF) ; \
-		$(PERL_MM_ARGS) $(MAKE) DESTDIR=$(STAGE) all
-
-FRC:
--- old/usr/src/cmd/zdb/zdb.c	Tue Apr 22 05:37:44 2014
+++ new/usr/src/cmd/zdb/zdb.c	Tue Apr 22 05:37:44 2014
@@ -21,7 +21,7 @@
 
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
  */
 
 #include <stdio.h>
@@ -2749,7 +2749,8 @@
 		dds.dds_ref_psize = zdde->zdde_ref_psize;
 		dds.dds_ref_dsize = zdde->zdde_ref_dsize;
 
-		ddt_stat_add(&ddh_total.ddh_stat[highbit(refcnt) - 1], &dds, 0);
+		ddt_stat_add(&ddh_total.ddh_stat[highbit64(refcnt) - 1],
+		    &dds, 0);
 
 		umem_free(zdde, sizeof (*zdde));
 	}
--- old/usr/src/head/uuid/uuid.h	Tue Apr 22 05:37:45 2014
+++ new/usr/src/head/uuid/uuid.h	Tue Apr 22 05:37:45 2014
@@ -24,11 +24,13 @@
  * Use is subject to license terms.
  */
 
+/*
+ * Copyright 2014 Andrew Stormont.
+ */
+
 #ifndef	_UUID_H
 #define	_UUID_H
 
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
-
 #ifdef	__cplusplus
 extern "C" {
 #endif
@@ -65,6 +67,8 @@
 extern void uuid_copy(uuid_t, uuid_t);
 extern void uuid_clear(uuid_t);
 extern void uuid_unparse(uuid_t, char *);
+extern void uuid_unparse_lower(uuid_t, char *);
+extern void uuid_unparse_upper(uuid_t, char *);
 extern int uuid_compare(uuid_t, uuid_t);
 extern int uuid_is_null(uuid_t);
 extern int uuid_parse(char *, uuid_t);
--- old/usr/src/lib/libdtrace/common/dt_decl.c	Tue Apr 22 05:37:45 2014
+++ new/usr/src/lib/libdtrace/common/dt_decl.c	Tue Apr 22 05:37:45 2014
@@ -21,7 +21,7 @@
 
 /*
  * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
  * Copyright (c) 2013 Joyent, Inc. All rights reserved.
  */
 
@@ -267,6 +267,26 @@
 		return (ddp);
 	}
 
+	if ((attr & DT_DA_LONG) && (ddp->dd_attr & DT_DA_LONGLONG)) {
+		xyerror(D_DECL_COMBO, "the attribute 'long' may only "
+		    "be used at most twice in a declaration");
+	}
+
+	if ((attr & DT_DA_SHORT) && (ddp->dd_attr & DT_DA_SHORT)) {
+		xyerror(D_DECL_COMBO, "the attribute 'short' may only be "
+		    "used at most once in a declaration");
+	}
+
+	if ((attr & DT_DA_SIGNED) && (ddp->dd_attr & DT_DA_SIGNED)) {
+		xyerror(D_DECL_COMBO, "the attribute 'signed' may only be "
+		    "used at most once in a declaration");
+	}
+
+	if ((attr & DT_DA_UNSIGNED) && (ddp->dd_attr & DT_DA_UNSIGNED)) {
+		xyerror(D_DECL_COMBO, "the attribute 'unsigned' may only be "
+		    "used at most once in a declaration");
+	}
+
 	if (attr == DT_DA_LONG && (ddp->dd_attr & DT_DA_LONG)) {
 		ddp->dd_attr &= ~DT_DA_LONG;
 		attr = DT_DA_LONGLONG;
--- old/usr/src/lib/libuuid/common/mapfile-vers	Tue Apr 22 05:37:45 2014
+++ new/usr/src/lib/libuuid/common/mapfile-vers	Tue Apr 22 05:37:45 2014
@@ -20,6 +20,7 @@
 #
 #
 # Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright 2014 Andrew Stormont.
 #
 
 #
@@ -38,6 +39,12 @@
 
 $mapfile_version 2
 
+SYMBOL_VERSION ILLUMOS_0.1 {
+    global:
+	uuid_unparse_lower;
+	uuid_unparse_upper;
+} SUNW_1.1;
+
 SYMBOL_VERSION SUNW_1.1 {
     global:
 	uuid_clear;
--- old/usr/src/lib/libuuid/common/uuid.c	Tue Apr 22 05:37:45 2014
+++ new/usr/src/lib/libuuid/common/uuid.c	Tue Apr 22 05:37:45 2014
@@ -23,6 +23,7 @@
  * Use is subject to license terms.
  * Copyright 2012 Milan Jurik. All rights reserved.
  * Copyright 2013 Joyent, Inc. All rights reserved.
+ * Copyright 2014 Andrew Stormont.
  */
 
 /*
@@ -578,8 +579,8 @@
  * binary format into a 36-byte string (plus trailing null char)
  * and stores this value in the character string pointed to by out.
  */
-void
-uuid_unparse(uuid_t uu, char *out)
+static void
+uuid_unparse_common(uuid_t uu, char *out, boolean_t upper)
 {
 	struct uuid 	uuid;
 	uint16_t	clock_seq;
@@ -591,26 +592,44 @@
 		return;
 	}
 
-	/* XXX user should have allocated enough memory */
-	/*
-	 * if (strlen(out) < UUID_PRINTABLE_STRING_LENGTH) {
-	 * return;
-	 * }
-	 */
 	string_to_struct(&uuid, uu);
 	clock_seq = uuid.clock_seq_hi_and_reserved;
 	clock_seq = (clock_seq  << 8) | uuid.clock_seq_low;
 	for (i = 0; i < 6; i++) {
-		(void) sprintf(&etheraddr[index++], "%.2x", uuid.node_addr[i]);
+		(void) sprintf(&etheraddr[index++], upper ? "%.2X" : "%.2x",
+		    uuid.node_addr[i]);
 		index++;
 	}
 	etheraddr[index] = '\0';
 
-	(void) snprintf(out, 25, "%08x-%04x-%04x-%04x-",
+	(void) snprintf(out, 25,
+	    upper ? "%08X-%04X-%04X-%04X-" : "%08x-%04x-%04x-%04x-",
 	    uuid.time_low, uuid.time_mid, uuid.time_hi_and_version, clock_seq);
 	(void) strlcat(out, etheraddr, UUID_PRINTABLE_STRING_LENGTH);
 }
 
+void
+uuid_unparse_upper(uuid_t uu, char *out)
+{
+	uuid_unparse_common(uu, out, B_TRUE);
+}
+
+void
+uuid_unparse_lower(uuid_t uu, char *out)
+{
+	uuid_unparse_common(uu, out, B_FALSE);
+}
+
+void
+uuid_unparse(uuid_t uu, char *out)
+{
+	/*
+	 * Historically uuid_unparse on Solaris returns lower case,
+	 * for compatibility we preserve this behaviour.
+	 */
+	uuid_unparse_common(uu, out, B_FALSE);
+}
+
 /*
  * The uuid_is_null function compares the value of the supplied
  * UUID variable uu to the NULL value. If the value is equal
--- old/usr/src/lib/libzpool/common/kernel.c	Tue Apr 22 05:37:45 2014
+++ new/usr/src/lib/libzpool/common/kernel.c	Tue Apr 22 05:37:45 2014
@@ -20,7 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
  * Copyright (c) 2013, Joyent, Inc.  All rights reserved.
  */
 
@@ -772,20 +772,17 @@
 /*
  * Find highest one bit set.
  *	Returns bit number + 1 of highest bit that is set, otherwise returns 0.
- * High order bit is 31 (or 63 in _LP64 kernel).
  */
 int
-highbit(ulong_t i)
+highbit64(uint64_t i)
 {
-	register int h = 1;
+	int h = 1;
 
 	if (i == 0)
 		return (0);
-#ifdef _LP64
-	if (i & 0xffffffff00000000ul) {
+	if (i & 0xffffffff00000000ULL) {
 		h += 32; i >>= 32;
 	}
-#endif
 	if (i & 0xffff0000) {
 		h += 16; i >>= 16;
 	}
--- old/usr/src/lib/libzpool/common/sys/zfs_context.h	Tue Apr 22 05:37:45 2014
+++ new/usr/src/lib/libzpool/common/sys/zfs_context.h	Tue Apr 22 05:37:45 2014
@@ -21,7 +21,7 @@
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
  * Copyright (c) 2012, Joyent, Inc. All rights reserved.
  */
 
@@ -516,7 +516,7 @@
 
 extern uint64_t physmem;
 
-extern int highbit(ulong_t i);
+extern int highbit64(uint64_t i);
 extern int random_get_bytes(uint8_t *ptr, size_t len);
 extern int random_get_pseudo_bytes(uint8_t *ptr, size_t len);
 
--- old/usr/src/man/man3perl/Exacct.3perl	Tue Apr 22 05:37:45 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,325 +0,0 @@
-'\" te
-.\" Copyright (c) 2002, Sun Microsystems, Inc. All Rights Reserved.
-.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
-.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
-.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH EXACCT 3PERL "Dec 1, 2002"
-.SH NAME
-Exacct \- exacct system calls and error handling
-.SH SYNOPSIS
-.LP
-.nf
-use Sun::Solaris::Exacct qw(:EXACCT_ALL);
-my $ea_rec = getacct(P_PID, $$);
-.fi
-
-.SH DESCRIPTION
-.sp
-.LP
-This module provides access to the \fBea_error\fR(3EXACCT) function and for all
-the extended accounting system calls. Constants from the various
-\fBlibexacct\fR(3LIB) header files are also provided.
-.SS "Constants"
-.sp
-.LP
-The \fBP_PID\fR, \fBP_TASKID\fR, \fBP_PROJID\fR and all the \fBEW_*\fR,
-\fBEP_*\fR, \fBEXR_*\fR macros are provided as Perl constants.
-.SS "Functions"
-.sp
-.ne 2
-.na
-\fB\fBgetacct($idtype, $id)\fR\fR
-.ad
-.sp .6
-.RS 4n
-The \fB$idtype\fR parameter must be either \fBP_TASKID\fR or \fBP_PID\fR and
-\fB$id\fR must be a corresponding task or process ID. This function returns an
-object of type \fBSun::Solaris::Exacct::Object\fR, representing the unpacked
-accounting buffer returned by the underlying \fBgetacct\fR(2) system call. In
-the event of error, \fBundef\fR is returned.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBputacct($idtype, $id, $record)\fR\fR
-.ad
-.sp .6
-.RS 4n
-The \fB$idtype\fR parameter must be either \fBP_TASKID\fR or \fBP_PID\fR and
-\fB$id\fR must be a corresponding task or process ID. If $record is of type
-Sun::Solaris::Exacct::Object, it is converted to the corresponding packed
-\fBlibexacct\fR object and passed to the \fBputacct\fR(2) system call. If
-\fB$record\fR is not of type \fBSun::Solaris::Exacct::Object\fR it is converted
-to a string using the normal Perl conversion rules and stored as a raw buffer.
-For predictable and endian-independent results, any raw buffers should be
-constructed using the Perl \fBpack()\fR function. This function returns true on
-success and false on failure.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBwracct($idtype, $id, $flags)\fR\fR
-.ad
-.sp .6
-.RS 4n
-The \fB$idtype\fR parameter must be either \fBP_TASKID\fR or \fBP_PID\fR and
-\fB$id\fR must be a corresponding task or process ID. The \fB$flags\fR
-parameter must be either \fBEW_INTERVAL\fR or \fBEW_PARTIAL\fR. The parameters
-are passed directly to the underlying \fBwracct\fR(2) system call. This
-function returns true on success and false on failure.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBea_error()\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function provides access to the \fBea_error\fR(3EXACCT) function. It
-returns a double-typed scalar that becomes one of the EXR_* constants. In a
-string context it becomes a descriptive error message. This is the exacct
-equivalent to the \fB$!(errno)\fR Perl variable.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBea_error_str()\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns a double-typed scalar that in a numeric context will be
-one of the EXR_* constants as returned by ea_error. In a string context it
-describes the value returned by ea_error. If ea_error returns EXR_SYSCALL_FAIL,
-the string value returned is the value returned by \fBstrerror\fR(3C). This
-function is provided as a convenience so that repeated blocks of code like the
-following can be avoided:
-.sp
-.in +2
-.nf
-if (ea_error() == EXR_SYSCALL_FAIL) {
-        print("error: $!\en");
-} else {
-        print("error: ", ea_error(), "\en");
-}
-.fi
-.in -2
-
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBea_register_catalog($cat_pfx, $catalog_id, $export, @idlist)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This convenience function is a wrapper around the
-\fBSun::Solaris::Exacct::Catalog->register()\fR method.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBea_new_catalog($integer)\fR\fR
-.ad
-.br
-.na
-\fB\fBea_new_catalog($cat_obj)\fR\fR
-.ad
-.br
-.na
-\fB\fBea_new_catalog($type, $catalog, $id)\fR\fR
-.ad
-.sp .6
-.RS 4n
-These convenience functions are wrappers around the
-\fBSun::Solaris::Exacct::Catalog->new()\fR method. See
-\fBExacct::Catalog\fR(3PERL).
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBea_new_file($name, $oflags, creator => $creator, aflags => $aflags, mode
-=> $mode)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This convenience function is a wrapper around the
-\fBSun::Solaris::Exacct::File->new()\fR method. See \fBExacct::File\fR(3PERL).
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBea_new_item($catalog, $value)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This convenience function is a wrapper around the
-\fBSun::Solaris::Exacct::Object::Item->new()\fR method. See
-\fBExacct::Object::Item\fR(3PERL).
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBea_new_group($catalog, @objects)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This convenience function is a wrapper around the
-\fBSun::Solaris::Exacct::Object::Group->new()\fR method. See
-\fBExacct::Object::Group\fR(3PERL).
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBea_dump_object($object, $filehandle)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This convenience function is a wrapper around the
-\fBSun::Solaris::Exacct::Object->dump()\fR method. See
-\fBExacct::Object\fR(3PERL).
-.RE
-
-.SS "Class methods"
-.sp
-.LP
-None.
-.SS "Object methods"
-.sp
-.LP
-None.
-.SS "Exports"
-.sp
-.LP
-By default nothing is exported from this module. The following tags can be used
-to selectively import constants and functions defined in this module:
-.sp
-.ne 2
-.na
-\fB\fB:SYSCALLS\fR\fR
-.ad
-.RS 21n
-\fBgetacct()\fR, \fBputacct()\fR, and \fBwracct()\fR
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB:LIBCALLS\fR\fR
-.ad
-.RS 21n
-\fBea_error()\fR and \fBea_error_str()\fR
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB:CONSTANTS\fR\fR
-.ad
-.RS 21n
-\fBP_PID\fR, \fBP_TASKID\fR, \fBP_PROJID\fR, \fBEW_*\fR, \fBEP_*\fR, and
-\fBEXR_*\fR
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB:SHORTHAND\fR\fR
-.ad
-.RS 21n
-\fBea_register_catalog()\fR, \fBea_new_catalog()\fR, \fBea_new_file()\fR,
-\fBea_new_item()\fR, and \fBea_new_group()\fR
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB:ALL\fR\fR
-.ad
-.RS 21n
-\fB:SYSCALLS\fR, \fB:LIBCALLS\fR, \fB:CONSTANTS\fR, and \fB:SHORTHAND\fR
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB:EXACCT_CONSTANTS\fR\fR
-.ad
-.RS 21n
-\fB:CONSTANTS\fR, plus the \fB:CONSTANTS\fR tags for
-\fBSun::Solaris::Catalog\fR, \fBSun::Solaris::File\fR, and
-\fBSun::Solaris::Object\fR
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB:EXACCT_ALL\fR\fR
-.ad
-.RS 21n
-\fB:ALL\fR, plus the \fB:ALL\fR tags for \fBSun::Solaris::Catalog\fR,
-\fBSun::Solaris::File\fR, and \fBSun::Solaris::Object\fR
-.RE
-
-.SH ATTRIBUTES
-.sp
-.LP
-See \fBattributes\fR(5) for descriptions of the following attributes:
-.sp
-
-.sp
-.TS
-box;
-c | c
-l | l .
-ATTRIBUTE TYPE	ATTRIBUTE VALUE
-_
-Interface Stability	Evolving
-.TE
-
-.SH SEE ALSO
-.sp
-.LP
-\fBgetacct\fR(2), \fBputacct\fR(2), \fBwracct\fR(2), \fBea_error\fR(3EXACCT),
-\fBExacct::Catalog\fR(3PERL), \fBExacct::File\fR(3PERL),
-\fBExacct::Object\fR(3PERL), \fBExacct::Object::Group\fR(3PERL),
-\fBExacct::Object::Item\fR(3PERL), \fBlibexacct\fR(3LIB), \fBattributes\fR(5)
-.SH NOTES
-.sp
-.LP
-The modules described in the section 3PERL manual pages make extensive use of
-the Perl "double-typed scalar" facility. This facility allows a scalar value to
-behave either as an integer or as a string, depending upon context. It is the
-same behavior as exhibited by the \fB$!\fR Perl variable (\fBerrno\fR). It is
-useful because it avoids the need to map from an integer value to the
-corresponding string to display a value. Some examples are provided below:
-.sp
-.in +2
-.nf
-# Assume $obj is a Sun::Solaris::Item
-my $type = $obj->type();
-
-# Print "2 EO_ITEM"
-printf("%d %s\en", $type, $type);
-
-# Behave as an integer, $i == 2
-my $i = 0 + $type;
-
-# Behave as a string, $s = "abc EO_ITEM xyx"
-my $s = "abc $type xyz";
-.fi
-.in -2
-
-.sp
-.LP
-Wherever a function or method is documented as returning a double-typed scalar,
-the returned value exhibits this type of behavior.
--- old/usr/src/man/man3perl/Exacct::Catalog.3perl	Tue Apr 22 05:37:45 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,217 +0,0 @@
-'\" te
-.\" Copyright (c) 2002, Sun Microsystems, Inc. All Rights Reserved.
-.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
-.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
-.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH EXACCT::CATALOG 3PERL "Dec 1, 2002"
-.SH NAME
-Exacct::Catalog \- exacct catalog tag manipulation
-.SH SYNOPSIS
-.LP
-.nf
-use Sun::Solaris::Exacct::Catalog qw(:ALL);
-my $ea_cat = Sun::Solaris::Exacct::Catalog->new(
-    &EXT_UINT64 | &EXC_DEFAULT | &EXD_PROC_PID);
-.fi
-
-.SH DESCRIPTION
-.sp
-.LP
-This class provides a wrapper around the 32-bit integer used as a catalog tag.
-The catalog tag is represented as a Perl object blessed into the
-\fBSun::Solaris::Exacct::Catalog\fR class so that methods can be used to
-manipulate fields in a catalog tag.
-.SS "Constants"
-.sp
-.LP
-All the \fBEXT_\fR*, \fBEXC_\fR*, and \fBEXD_\fR* macros are provided as
-constants.  Constants passed to the methods below can either be the integer
-value such as \fBEXT_UINT8\fR or the string representation such as
-"\fBEXT_UINT8\fR".
-.SS "Functions"
-.sp
-.LP
-None.
-.SS "Class methods"
-.sp
-.ne 2
-.na
-\fB\fBregister($cat_pfx, $catalog_id, $export, @idlist)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This method is used to register application-defined \fBlibexacct\fR(3LIB)
-catalogs with the exacct Perl library. See
-<\fB/usr/include/sys/exacct_catalog.h\fR> for details of the catalog tag
-format.  This method allows symbolic names and strings to be used for
-manipulating application-defined catalogs. The first two parameters define the
-catalog prefix and associated numeric catalog ID. If the \fB$export\fR
-parameter is true, the constants are exported into the caller's package. The
-final parameter is a list of (\fBid\fR, \fBname\fR) pairs that identify the
-required constants. The constants created by this method are formed by
-appending \fB$cat_pfx\fR and "_" to each name in the list, replacing any spaces
-with underscore characters and converting the resulting string to uppercase
-characters. The \fB$catalog_name\fR value is also created as a constant by
-prefixing it with\fB EXC_\fR and converting it to uppercase characters. Its
-value becomes that of \fB$catalog_id\fR shifted left by 24 bits. For example,
-the following call:
-.sp
-.in +2
-.nf
-Sun::Solaris::Exacct::Catalog->ea_register("MYCAT", 0x01, 1,
-   FIRST => 0x00000001, SECOND => 0x00000010);
-.fi
-.in -2
-
-results in the definition of the following constants:
-.sp
-.in +2
-.nf
-EXC_MYCAT    0x01 << 24
-MYCAT_FIRST  0x00000001
-MYCAT_SECOND 0x00000010
-.fi
-.in -2
-
-Only the catalog ID value of 0x01 is available for application use
-(\fBEXC_LOCAL\fR). All other values are reserved.  While it is possible to use
-values other than 0x01, they might conflict with future extensions to the
-\fBlibexacct\fR file format.
-.sp
-If any errors are detected during this method, a string is returned containing
-the appropriate error message. If the call is sucessful, \fBundef\fR is
-returned.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBnew($integer)\fR\fR
-.ad
-.br
-.na
-\fB\fBnew($cat_obj)\fR\fR
-.ad
-.br
-.na
-\fB\fBnew($type, $catalog, $id)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This method creates and returns a new Catalog object, which is a wrapper around
-a 32-bit integer catalog tag. Three possible argument lists can be given. The
-first variant is to pass an integer formed by bitwise-inclusive OR of the
-appropriate \fBEX[TCD]_\fR* constants. The second variant is to pass an
-existing Catalog object that will be copied. The final variant is to pass in
-the type, catalog and ID fields as separate values. Each of these values can be
-either an appropriate integer constant or the string representation of the
-constant.
-.RE
-
-.SS "Object methods"
-.sp
-.ne 2
-.na
-\fB\fBvalue()\fR\fR
-.ad
-.RS 17n
-This method allows the value of the catalog tag to be queried. In a scalar
-context it returns the 32-bit integer representing the tag. In a list context
-it returns a (\fBtype\fR, \fBcatalog\fR, \fBid\fR) triplet, where each member
-of the triplet is a dual-typed scalar.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBtype()\fR\fR
-.ad
-.RS 17n
-This method returns the type field of the catalog tag as a dual-typed scalar.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBcatalog()\fR\fR
-.ad
-.RS 17n
-This method returns the catalog field of the catalog tag as a dual-typed
-scalar.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBid()\fR\fR
-.ad
-.RS 17n
-This method returns the id field of the catalog tag as a dual-typed scalar.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBtype_str()\fR\fR
-.ad
-.br
-.na
-\fB\fBcatalog_str()\fR\fR
-.ad
-.br
-.na
-\fB\fBid_str()\fR\fR
-.ad
-.RS 17n
-These methods return string representations of the appropriate value. These
-methods can be used for textual output of the various catalog fields. The
-string representations of the constants are formed by removing the \fBEXT_\fR,
-\fBEXC_\fR, or \fBEXD_\fR prefix, replacing any underscore characters with
-spaces, and converting the remaining string to lowercase characters.
-.RE
-
-.SS "Exports"
-.sp
-.LP
-By default nothing is exported from this module. The following tags can be used
-to selectively import constants and functions defined in this module:
-.sp
-.ne 2
-.na
-\fB\fB:CONSTANTS\fR\fR
-.ad
-.RS 14n
-\fBEXT_\fR*, \fBEXC_\fR*, and \fBEXD_\fR*
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB:ALL\fR\fR
-.ad
-.RS 14n
-\fB:CONSTANTS\fR
-.RE
-
-.SH ATTRIBUTES
-.sp
-.LP
-See \fBattributes\fR(5) for descriptions of the following attributes:
-.sp
-
-.sp
-.TS
-box;
-c | c
-l | l .
-ATTRIBUTE TYPE	ATTRIBUTE VALUE
-_
-Interface Stability	Evolving
-.TE
-
-.SH SEE ALSO
-.sp
-.LP
-\fBExacct\fR(3PERL), \fBExacct::File\fR(3PERL), \fBExacct::Object\fR(3PERL),
-\fBExacct::Object::Group\fR(3PERL), \fBExacct::Object::Item\fR(3PERL),
-\fBlibexacct\fR(3LIB), \fBattributes\fR(5)
--- old/usr/src/man/man3perl/Exacct::File.3perl	Tue Apr 22 05:37:45 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,234 +0,0 @@
-'\" te
-.\" Copyright (c) 2002, Sun Microsystems, Inc. All Rights Reserved.
-.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
-.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
-.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH EXACCT::FILE 3PERL "Dec 1, 2002"
-.SH NAME
-Exacct::File \- exacct file manipulation
-.SH SYNOPSIS
-.LP
-.nf
-use Sun::Solaris::Exacct::File qw(:ALL);
-my $ea_file = Sun::Solaris::Exacct::File->new($myfile, &O_RDONLY);
-my $ea_obj = $ea_file->get();
-.fi
-
-.SH DESCRIPTION
-.sp
-.LP
-This module provides access to the \fBlibexacct\fR(3LIB) functions that
-manipulate accounting files. The interface is object-oriented and allows the
-creation and reading of \fBlibexacct\fR files. The C library calls wrapped by
-this module are \fBea_open\fR(3EXACCT), \fBea_close\fR(3EXACCT),
-\fBea_next_object\fR(3EXACCT), \fBea_previous_object\fR(3EXACCT),
-\fBea_write_object\fR(3EXACCT), \fBea_get_object\fR(3EXACCT),
-\fBea_get_creator\fR(3EXACCT), and \fBea_get_hostname\fR(3EXACCT).  The file
-read and write methods all operate on \fBSun::Solaris::Exacct::Object\fR
-objects and perform all the necessary memory management, packing, unpacking,
-and structure conversions that are required.
-.SS "Constants"
-.sp
-.LP
-\fBEO_HEAD\fR, \fBEO_TAIL\fR, \fBEO_NO_VALID_HDR\fR, \fBEO_POSN_MSK\fR, and
-\fBEO_VALIDATE_MSK\fR.  Other constants needed by the \fBnew()\fR method below
-are in the standard Perl Fcntl module.
-.SS "Functions"
-.sp
-.LP
-None.
-.SS "Class methods"
-.sp
-.ne 2
-.na
-\fB\fBnew($name, $oflags, creator => $creator,\fR\fR
-.ad
-.sp .6
-.RS 4n
-This method opens a \fBlibexacct\fR file as specified by the mandatory
-parameters \fB$name\fR and \fB$oflags\fR, and returns a
-\fBSun::Solaris::Exacct::File\fR object, or \fBundef\fR if an error occurs. The
-parameters \fB$creator\fR, \fB$aflags\fR, and \fB$mode\fR are optional and are
-passed as (\fBname\fR => \fBvalue\fR) pairs. The only valid values for
-\fB$oflags\fR are the combinations of \fBO_RDONLY\fR, \fBO_WRONLY\fR,
-\fBO_RDWR\fR, and \fBO_CREAT\fR described below.
-.sp
-The \fB$creator\fR parameter is a string describing the creator of the file. If
-it is required (for instance, when writing to a file) but absent, it is set to
-the string representation of the caller's UID. The \fB$aflags\fR parameter
-describes the required positioning in the file for \fBO_RDONLY\fR access:
-either \fBEO_HEAD\fR or \fBEO_TAIL\fR are allowed.  If absent, \fBEO_HEAD\fR is
-assumed.  The \fB$mode\fR parameter is the file creation mode and is ignored
-unless \fBO_CREAT\fR is specified in \fB$oflags\fR. If \fB$mode\fR is
-unspecified, the file creation mode is set to 0666 (octal). If an error occurs,
-it can be retrieved with the \fBSun::Solaris::Exacct::ea_error()\fR function.
-See \fBExacct\fR(3PERL).
-.sp
-
-.sp
-.TS
-c c c
-l l l .
-\fB$oflags\fR	\fB$aflags\fR	Action
-\fBO_RDONLY\fR	Absent or \fBEO_HEAD\fR	T{
-Open for reading at the start of the file.
-T}
-\fBO_RDONLY\fR	\fBEO_TAIL\fR	Open for reading at the end of the file.
-\fBO_WRONLY\fR	Ignored	T{
-File must exist, open for writing at the end of the file.
-T}
-\fBO_WRONLY\fR | \fBO_CREAT\fR	Ignored	T{
-Create file if it does not exist, otherwise truncate and open for writing.
-T}
-\fBO_RDWR\fR	Ignored	T{
-File must exist, open for reading/writing, positioned at the end of the file.
-T}
-\fBO_RDWR\fR | \fBO_CREAT\fR	Ignored	T{
-Create file if it does not exist, otherwise truncate and open for reading/writing.
-T}
-.TE
-
-.RE
-
-.SS "Object methods"
-.sp
-.LP
-There is no explicit \fBclose()\fR method for a
-\fBSun::Solaris::Exacct::File\fR. The file is closed when the file handle
-object is undefined or reassigned.
-.sp
-.ne 2
-.na
-\fB\fBcreator()\fR\fR
-.ad
-.sp .6
-.RS 4n
-This method returns a string containing the creator of the file or \fBundef\fR
-if the file does not contain the information.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBhostname()\fR\fR
-.ad
-.sp .6
-.RS 4n
-This method returns a string containing the hostname on which the file was
-created, or \fBundef\fR if the file does not contain the information.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBnext()\fR\fR
-.ad
-.sp .6
-.RS 4n
-This method reads the header information of the next record in the file. In a
-scalar context the value of the type field is returned as a dual-typed scalar
-that will be one of \fBEO_ITEM\fR, \fBEO_GROUP\fR, or \fBEO_NONE\fR. In a list
-context it returns a two-element list containing the values of the type and
-catalog fields. The type element is a dual-typed scalar. The catalog element is
-blessed into the \fBSun::Solaris::Exacct::Catalog\fR class. If an error occurs,
-\fBundef\fR or (\fBundef\fR, \fBundef\fR) is returned depending upon context.
-The status can be accessed with the \fBSun::Solaris::Exacct::ea_error()\fR
-function.See \fBExacct\fR(3PERL).
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBprevious()\fR\fR
-.ad
-.sp .6
-.RS 4n
-This method reads the header information of the previous record in the file. In
-a scalar context it returns the type field. In a list context it returns the
-two-element list containing the values of the type and catalog fields, in the
-same manner as the \fBnext()\fR method. Error are also returned in the same
-manner as the \fBnext()\fR method.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBget()\fR\fR
-.ad
-.sp .6
-.RS 4n
-This method reads in the \fBlibexacct\fR record at the current position in the
-file and returns a \fBSun::Solaris::Exacct::Object\fR containing the unpacked
-data from the file.  This object can then be further manipulated using its
-methods.  In case of error undef is returned and the error status is made
-available with the \fBSun::Solaris::Exacct::ea_error()\fR function.  After this
-operation, the position in the file is set to the start of the next record in
-the file.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBwrite(@ea_obj)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This method converts the passed list of Sun::Solaris::Exacct::Objects into
-\fBlibexacct\fR file format and appends them to the \fBlibexacct\fR file, which
-must be open for writing. This method returns true if successful and false
-otherwise.  On failure the error can be examined with the
-\fBSun::Solaris::Exacct::ea_error()\fR function.
-.RE
-
-.SS "Exports"
-.sp
-.LP
-By default nothing is exported from this module. The following tags can be used
-to selectively import constants defined in this module:
-.sp
-.ne 2
-.na
-\fB\fB:CONSTANTS\fR\fR
-.ad
-.sp .6
-.RS 4n
-\fBEO_HEAD\fR, \fBEO_TAIL\fR, \fBEO_NO_VALID_HDR\fR, \fBEO_POSN_MSK\fR, and
-\fBEO_VALIDATE_MSK\fR
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB:ALL\fR\fR
-.ad
-.sp .6
-.RS 4n
-\fB:CONSTANTS\fR, Fcntl(\fB:DEFAULT\fR).
-.RE
-
-.SH ATTRIBUTES
-.sp
-.LP
-See \fBattributes\fR(5) for descriptions of the following attributes:
-.sp
-
-.sp
-.TS
-box;
-c | c
-l | l .
-ATTRIBUTE TYPE	ATTRIBUTE VALUE
-_
-Interface Stability	Evolving
-.TE
-
-.SH SEE ALSO
-.sp
-.LP
-\fBea_close\fR(3EXACCT), \fBea_get_creator\fR(3EXACCT),
-\fBea_get_hostname\fR(3EXACCT), \fBea_get_object\fR(3EXACCT),
-\fBea_next_object\fR(3EXACCT), \fBea_open\fR(3EXACCT),
-\fBea_previous_object\fR(3EXACCT), \fBea_write_object\fR(3EXACCT),
-\fBExacct\fR(3PERL), \fBExacct::Catalog\fR(3PERL), \fBExacct::Object\fR(3PERL),
-\fBExacct::Object::Group\fR(3PERL), \fBExacct::Object::Item\fR(3PERL),
-\fBlibexacct\fR(3LIB), \fBattributes\fR(5)
--- old/usr/src/man/man3perl/Exacct::Object.3perl	Tue Apr 22 05:37:45 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,201 +0,0 @@
-'\" te
-.\" Copyright (c) 2002, Sun Microsystems, Inc. All Rights Reserved.
-.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
-.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
-.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH EXACCT::OBJECT 3PERL "Dec 1, 2002"
-.SH NAME
-Exacct::Object \- exacct object manipulation
-.SH SYNOPSIS
-.LP
-.nf
-use Sun::Solaris::Exacct::Object qw(:ALL);
-print($ea_obj->value(), "\en");
-.fi
-
-.SH DESCRIPTION
-.sp
-.LP
-This module is used as a parent of the two possible types of Perl exacct
-objects: Items and Groups. An Item is either a single data value such as the
-number of seconds of user CPU time consumed by a process, an embedded Perl
-exacct object, or a block of raw data.  A Group is an ordered collection of
-Perl exacct Items such as all of the resource usage values for a particular
-process or task. If Groups need to be nested within each other, the inner
-Groups can be stored as embedded Perl exacct objects inside the enclosing
-Group.
-.sp
-.LP
-This module contains methods that are common to both Perl exacct Items and
-Groups. The attributes of \fBSun::Solaris::Exacct::Object\fR and all classes
-derived from it are read-only after initial creation with \fBnew()\fR. This
-behavior prevents the inadvertent modification of the attributes that could
-produce inconsistent catalog tags and data values. The only exception is the
-array used to store the Items inside a Group object, which can be modified
-using the normal Perl array operators. See the \fBvalue()\fR method below.
-.SS "Constants"
-.sp
-.LP
-\fBEO_ERROR\fR, \fBEO_NONE\fR, \fBEO_ITEM\fR, and \fBEO_GROUP\fR.
-.SS "Functions"
-.sp
-.LP
-None.
-.SS "Class methods"
-.sp
-.ne 2
-.na
-\fB\fBdump($object, $filehandle)\fR\fR
-.ad
-.RS 30n
-This method dumps formatted text representation of a Perl exacct object to the
-supplied file handle. If no file handle is specified, the text representation
-is dumped to \fBSTDOUT\fR. See EXAMPLES below for sample output.
-.RE
-
-.SS "Object methods"
-.sp
-.ne 2
-.na
-\fB\fBtype()\fR\fR
-.ad
-.RS 27n
-This method returns the type field of the Perl exacct object. The value of the
-type field is returned as a dual-typed scalar and is either \fBEO_ITEM\fR,
-\fBEO_GROUP\fR, or \fBEO_NONE\fR.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBcatalog()\fR\fR
-.ad
-.RS 27n
-This method returns the catalog field of the Perl exacct object. The value is
-returned as a \fBSun::Solaris::Exacct::Catalog\fR object.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBmatch_catalog($catalog)\fR\fR
-.ad
-.RS 27n
-This method matches the passed catalog tag against the object. True is returned
-of a match occurs.  Otherwise false is returned. This method has the same
-behavior as the underlying \fBea_match_object_catalog\fR(3EXACCT) function.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBvalue()\fR\fR
-.ad
-.RS 27n
-This method returns the value of the Perl exacct object. In the case of an
-Item, this object will normally be a Perl scalar, either a number or string.
-For raw Items, the buffer contained inside the object is returned as a Perl
-string that can be manipulated with the Perl \fBunpack()\fR function. If the
-Item contains either a nested Item or a nested Group, the enclosed Item is
-returned as a reference to an object of the appropriate subtype of the
-\fBSun::Solaris::Exacct::Object\fR class.
-.sp
-For Group objects, if \fBvalue()\fR is called in a scalar context, the return
-value is a reference to the underlying array used to store the component Items
-of the Group. Since this array can be manipulated with the normal Perl array
-indexing syntax and array operators, the objects inside the Group can be
-manipulated. All objects in the array must be derived from the
-\fBSun::Solaris::Exacct::Object\fR class. Any attempt to insert something else
-into the array will generate a fatal runtime error that can be caught with an
-\fBeval { }\fR block.
-.sp
-If \fBvalue()\fR is called in a list context for a Group object, it returns a
-list of all the objects in the Group. Unlike the array reference returned in a
-scalar context, this list cannot be manipulated to add or delete Items from a
-Group. This mechanism is considerably faster than the array mechanism described
-above and is the preferred mechanism if a Group is being examined in a
-read-only manner.
-.RE
-
-.SS "Exports"
-.sp
-.LP
-By default nothing is exported from this module. The following tags can be used
-to selectively import constants and functions defined in this module:
-.sp
-.ne 2
-.na
-\fB\fB:CONSTANTS\fR\fR
-.ad
-.RS 14n
-\fBEO_ERROR\fR, \fBEO_NONE\fR, \fBEO_ITEM\fR, and \fBEO_GROUP\fR
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB:ALL\fR\fR
-.ad
-.RS 14n
-\fB:CONSTANTS\fR
-.RE
-
-.SH EXAMPLES
-.LP
-\fBExample 1 \fROutput of the \fBdump()\fR method for a Perl exacct Group
-object.
-.sp
-.LP
-The following is an example of output of the \fBdump()\fR method for a Perl
-exacct Group object.
-
-.sp
-.in +2
-.nf
-GROUP
-  Catalog = EXT_GROUP|EXC_DEFAULT|EXD_GROUP_PROC_PARTIAL
-  ITEM
-    Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_PID
-    Value = 3
-  ITEM
-    Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_UID
-    Value = 0
-  ITEM
-    Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_GID
-    Value = 0
-  ITEM
-    Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_PROJID
-    Value = 0
-  ITEM
-    Catalog = EXT_UINT32|EXC_DEFAULT|EXD_PROC_TASKID
-    Value = 0
-  ITEM
-    Catalog = EXT_STRING|EXC_DEFAULT|EXD_PROC_COMMAND
-    Value = fsflush
-ENDGROUP
-.fi
-.in -2
-
-.SH ATTRIBUTES
-.sp
-.LP
-See \fBattributes\fR(5) for descriptions of the following attributes:
-.sp
-
-.sp
-.TS
-box;
-c | c
-l | l .
-ATTRIBUTE TYPE	ATTRIBUTE VALUE
-_
-Interface Stability	Evolving
-.TE
-
-.SH SEE ALSO
-.sp
-.LP
-\fBea_match_object_catalog\fR(3EXACCT), \fBExacct\fR(3PERL),
-\fBExacct::Catalog\fR(3PERL), \fBExacct::File\fR(3PERL),
-\fBExacct::Object::Group\fR(3PERL), \fBExacct::Object::Item\fR(3PERL),
-\fBlibexacct\fR(3LIB), \fBattributes\fR(5)
--- old/usr/src/man/man3perl/Exacct::Object::Group.3perl	Tue Apr 22 05:37:45 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,116 +0,0 @@
-'\" te
-.\" Copyright (c) 2002, Sun Microsystems, Inc. All Rights Reserved.
-.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
-.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
-.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH EXACCT::OBJECT::GROUP 3PERL "Dec 1, 2002"
-.SH NAME
-Exacct::Object::Group \- exacct group manipulation
-.SH SYNOPSIS
-.LP
-.nf
-use Sun::Solaris::Exacct::Object;
-my $ea_grp = Sun::Solaris::Exacct::Object::Group->new(
-   & EXT_GROUP | &EXC_DEFAULT | &EXD_GROUP_PROC);
-.fi
-
-.SH DESCRIPTION
-.sp
-.LP
-This module is used for manipulating \fBlibexacct\fR(3LIB) Group objects. A
-\fBlibexacct\fR Group object is represented as an opaque reference blessed into
-the \fBSun::Solaris::Exacct::Object::Group\fR class, which is a subclass of the
-\fBSun::Solaris::Exacct::Object\fR class. The Items within a Group are stored
-inside a Perl array. A reference to the array can be accessed with the
-inherited \fBvalue()\fR method. The individual Items within a Group can be
-manipulated with the normal Perl array syntax and operators. All data elements
-of the array must be derived from the \fBSun::Solaris::Exacct::Object\fR class.
-Group objects can also be nested inside each other simply by adding an existing
-Group as a data Item.
-.SS "Constants"
-.sp
-.LP
-None.
-.SS "Functions"
-.sp
-.LP
-None.
-.SS "Class methods"
-.sp
-.LP
-Class methods include those inherited from the
-\fBSun::Solaris::Exacct::Object\fR base class, plus the following:
-.sp
-.ne 2
-.na
-\fB\fBnew($catalog, @objects)\fR\fR
-.ad
-.RS 27n
-This method creates and returns a new
-\fBSun::Solaris::Exacct::Object::Group\fR. The catalog tag can be either an
-integer or a \fBSun::Solaris::Exacct::Catalog\fR. The catalog tag should be a
-valid catalog tag for a Perl exacct Group object. The \fB@objects\fR parameter
-is a list of \fBSun::Solaris::Exacct::Object\fR to be stored inside the Group.
-A copy of all the passed Items is taken and any Group objects are recursively
-copied. The contents of the returned Group object can be accessed with the
-array returned by the value method.
-.RE
-
-.SS "Object methods"
-.sp
-.ne 2
-.na
-\fB\fBas_hash()\fR\fR
-.ad
-.RS 17n
-This method returns the contents of the group as a hash reference. It uses the
-string value of each item's catalog ID as the hash entry key and the scalar
-value returned by \fBvalue()\fR as the hash entry value. This form should be
-used if  there are no duplicate catalog tags in the group.
-.sp
-This method and its companion \fBas_hashlist()\fR are the fastest ways to
-access the contents of a Group.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBas_hashlist()\fR\fR
-.ad
-.RS 17n
-This method returns the contents of the group as a hash reference. It uses the
-string value of each item's catalog id as the hash entry key and an array of
-the scalar values returned by \fBvalue()\fR as the hash entry value for all the
-items that share a common key. This form should be used if there might be
-duplicate catalog tags in the group.
-.sp
-This method and its companion \fBas_hash()\fR are the fastest ways to access
-the contents of a Group.
-.RE
-
-.SS "Exports"
-.sp
-.LP
-None.
-.SH ATTRIBUTES
-.sp
-.LP
-See \fBattributes\fR(5) for descriptions of the following attributes:
-.sp
-
-.sp
-.TS
-box;
-c | c
-l | l .
-ATTRIBUTE TYPE	ATTRIBUTE VALUE
-_
-Interface Stability	Evolving
-.TE
-
-.SH SEE ALSO
-.sp
-.LP
-\fBExacct\fR(3PERL), \fBExacct::Catalog\fR(3PERL), \fBExacct::File\fR(3PERL),
-\fBExacct::Object\fR(3PERL), \fBExacct::Object::Item\fR(3PERL),
-\fBlibexacct\fR(3LIB), \fBattributes\fR(5)
--- old/usr/src/man/man3perl/Exacct::Object::Item.3perl	Tue Apr 22 05:37:45 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,103 +0,0 @@
-'\" te
-.\" Copyright (c) 2002, Sun Microsystems, Inc. All Rights Reserved.
-.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
-.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
-.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH EXACCT::OBJECT::ITEM 3PERL "Dec 1, 2002"
-.SH NAME
-Exacct::Object::Item \- exacct item manipulation
-.SH SYNOPSIS
-.LP
-.nf
-use Sun::Solaris::Exacct::Object;
-my $ea_item = Sun::Solaris::Exacct::Object::Item->new(
-    &EXT_UINT64 | &EXC_DEFAULT | &EXD_PROC_PID, $$);
-.fi
-
-.SH DESCRIPTION
-.sp
-.LP
-This module is used for manipulating \fBlibexacct\fR(3LIB) data Items. A
-\fBlibexacct\fR Item is represented as an opaque reference blessed into the
-\fBSun::Solaris::Exacct::Object::Item\fR class, which is a subclass of the
-\fBSun::Solaris::Exacct::Object\fR class. The underlying \fBlibexacct\fR data
-types are mapped onto Perl types as follows:
-.sp
-
-.sp
-.TS
-c c
-l l .
-libexacct type	Perl internal type
-\fBEXT_UINT8\fR	IV (integer)
-\fBEXT_UINT16\fR	IV (integer)
-\fBEXT_UINT32\fR	IV (integer)
-\fBEXT_UINT64\fR	IV (integer)
-\fBEXT_DOUBLE\fR	NV (double)
-\fBEXT_STRING\fR	PV (string)
-\fBEXT_RAW\fR	PV (string)
-\fBEXT_EXACCT_OBJECT\fR	\fBSun::Solaris::Exacct::Object subclass\fR
-.TE
-
-.SS "Constants"
-.sp
-.LP
-None.
-.SS "Functions"
-.sp
-.LP
-None.
-.SS "Class methods"
-.sp
-.LP
-Class methods include those inherited from the
-\fBSun::Solaris::Exacct::Object\fR base class, plus the following:
-.sp
-.ne 2
-.na
-\fB\fBnew($catalog, $value)\fR\fR
-.ad
-.RS 25n
-This method creates and returns a new \fBSun::Solaris::Exacct::Object::Item\fR.
-The catalog tag can be either an integer or a
-\fBSun::Solaris::Exacct::Catalog\fR. This catalog tag controls the conversion
-of the Perl value to the corresponding Perl exacct data type as described in
-the table above. If the catalog tag has a type field of
-\fBEXT_EXACCT_OBJECT\fR, the value must be a reference to either an Item or a
-Group object and the passed object is recursively copied and stored inside the
-new Item. Because the returned Item is constant, it is impossible, for example,
-to create an Item representing CPU seconds and subsequently modify its value or
-change its catalog value. This behavior is intended to prevent mismatches
-between the catalog tag and the data value.
-.RE
-
-.SS "Object methods"
-.sp
-.LP
-Object methods are those inherited from the \fBSun::Solaris::Exacct::Object\fR.
-.SS "Exports"
-.sp
-.LP
-None.
-.SH ATTRIBUTES
-.sp
-.LP
-See \fBattributes\fR(5) for descriptions of the following attributes:
-.sp
-
-.sp
-.TS
-box;
-c | c
-l | l .
-ATTRIBUTE TYPE	ATTRIBUTE VALUE
-_
-Interface Stability	Evolving
-.TE
-
-.SH SEE ALSO
-.sp
-.LP
-\fBExacct\fR(3PERL), \fBExacct::Catalog\fR(3PERL), \fBExacct::File\fR(3PERL),
-\fBExacct::Object\fR(3PERL), \fBExacct::Object::Group\fR(3PERL),
-\fBlibexacct\fR(3LIB), \fBattributes\fR(5)
--- old/usr/src/man/man3perl/Makefile	Tue Apr 22 05:37:45 2014
+++ new/usr/src/man/man3perl/Makefile	Tue Apr 22 05:37:45 2014
@@ -12,6 +12,7 @@
 #
 # Copyright 2011, Richard Lowe
 # Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
+# Copyright (c) 2014 Racktop Systems.
 #
 
 include		$(SRC)/Makefile.master
@@ -18,38 +19,13 @@
 
 MANSECT=	3perl
 
-MANFILES=	Exacct.3perl			\
-	 	Exacct\:\:Catalog.3perl		\
-	 	Exacct\:\:File.3perl		\
-	 	Exacct\:\:Object.3perl		\
-	 	Exacct\:\:Object\:\:Group.3perl \
-	 	Exacct\:\:Object\:\:Item.3perl	\
-	 	Kstat.3perl			\
+MANFILES=	Kstat.3perl			\
 	 	Lgrp.3perl			\
-	 	Privilege.3perl			\
 	 	Project.3perl			\
-	 	Task.3perl			\
-	 	Ucred.3perl
+	 	Task.3perl
 
 .KEEP_STATE:
 
 include		$(SRC)/man/Makefile.man
 
-#
-# When KEEP_STATE is in effect and a target has a colon in the name (like the
-# Exacct::* pages above, dmake will write them to the state file unescaped,
-# creating a file which then cannot be reparsed, breaking any build other than
-# the first in this directory:
-#
-# See CR 6987108 make will write un-escaped :'s to .make.state, break itself
-#
-# As a workaround, install the files manually in a FRC target.
-CMD= $(INS) -s -m $(FILEMODE) -f $(ROOTMAN)/man$(MANSECT)
-install: FRC
-	@for file in $(MANFILES); do					\
-		if [[ $$file -nt $(ROOTMAN)/man$(MANSECT)/$$file ]]; then \
-			$(ECHO) $(CMD) $$file;				\
-			$(RM) $(ROOTMAN)/man$(MANSECT)/$$file;		\
-			$(CMD) $$file;					\
-		fi							\
-	done;
+install: $(ROOTMANFILES) $(ROOTMANLINKS)
--- old/usr/src/man/man3perl/Privilege.3perl	Tue Apr 22 05:37:45 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,303 +0,0 @@
-'\" te
-.\" Copyright (c) 2004, Sun Microsystems, Inc. All Rights Reserved.
-.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
-.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
-.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH PRIVILEGE 3PERL "Jan 30, 2004"
-.SH NAME
-Privilege \- Perl interface to Privileges
-.SH SYNOPSIS
-.LP
-.nf
-use Sun::Solaris::Privilege qw(:ALL);
-.fi
-
-.SH DESCRIPTION
-.sp
-.LP
-This module provides wrappers for the Privilege-related system and library
-calls. Also provided are constants from the various Privilege-related headers
-and dynamically-generated constants for all the privileges and privilege sets.
-.SS "Constants"
-.sp
-.LP
-\fBPRIV_STR_SHORT\fR, \fBPRIV_STR_LIT\fR, \fBPRIV_STR_PORT\fR, \fBPRIV_ON\fR,
-\fBPRIV_OFF\fR, \fBPRIV_SET\fR, \fBPRIV_AWARE\fR, and \fBPRIV_DEBUG\fR.
-.SS "Functions"
-.sp
-.ne 2
-.na
-\fB\fBgetppriv($which)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns the process privilege set specified by
-\fB\fR\fB$which\fR.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBsetppriv($op, $which, $set)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function modified the privilege set specified by $which in the as
-specified by the \fB$op\fR and \fB$set\fR arguments. If \fB$op\fR is
-\fBPRIV_ON\fR, the privileges in \fB$set\fR are added to the set specified. If
-\fB$op\fR is \fBPRIV_OFF\fR, the privileges in \fB$set\fR are removed from the
-set specified. If \fB$op\fR is \fBPRIV_SET\fR, the specified set is made equal
-to \fB$set\fR.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBgetpflags($flag)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns the value associated with process \fB$flag\fR or
-\fBundef\fR on error. Possible values for \fB$flag\fR are \fBPRIV_AWARE\fR and
-\fBPRIV_DEBUG\fR.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBsetppflags($flag, $val)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function sets the process flag \fB$flag\fR to \fB$val\fR.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBpriv_fillset()\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns a new privilege set with all privileges set.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBpriv_emptyset()\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns a new empty privilege set.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBpriv_isemptyset($set)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns whether or not \fB$set\fR is empty.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBpriv_isfullset($set)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns whether or not \fB$set\fR is full.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBpriv_isequalset($a, $b)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns whether sets \fB$a\fR and \fB$b\fR are equal.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBpriv_issubset($a, $b)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns whether set \fB$a\fR is a subset of \fB$b\fR.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBpriv_ismember($set, $priv)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns whether \fB$priv\fR is a member of \fB$set\fR.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBpriv_ineffect($priv)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returned whether \fB$priv\fR is in the process's effective set.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBpriv_intersect($a, $b)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns a new privilege set which is the intersection of \fB$a\fR
-and \fB$b\fR.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBpriv_union($a, $b)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns a new privilege set which is the union of \fB$a\fR and
-\fB$b\fR.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBpriv_inverse($a)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns a new privilege set which is the inverse of \fB$a\fR.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBpriv_addset($set, $priv)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This functon adds the privilege \fB$priv\fR to \fB$set\fR.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBpriv_copyset($a)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns a copy of the privilege set \fB$a\fR.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBpriv_delset($set, $priv)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function remove the privilege \fB$priv\fR from \fB$set\fR.
-.RE
-
-.SS "Class methods"
-.sp
-.LP
-None.
-.SS "Object methods"
-.sp
-.LP
-None.
-.SS "Exports"
-.sp
-.LP
-By default nothing is exported from this module. The following tags can be used
-to selectively import constants and functions defined in this module:
-.sp
-.ne 2
-.na
-\fB\fB:SYSCALLS\fR\fR
-.ad
-.RS 14n
-\fBgetppriv()\fR, \fBsetppriv()\fR
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB:LIBCALLS\fR\fR
-.ad
-.RS 14n
-\fBpriv_addset()\fR, \fBpriv_copyset()\fR, \fBpriv_delset()\fR,
-\fBpriv_emptyset()\fR, \fBpriv_fillset()\fR, \fBpriv_intersect()\fR,
-\fBpriv_inverse()\fR, \fBpriv_isemptyset()\fR, \fBpriv_isequalset()\fR,
-\fBpriv_isfullset()\fR, \fBpriv_ismember()\fR, \fBpriv_issubset()\fR,
-\fBpriv_gettext()\fR, \fBpriv_union()\fR, \fBpriv_set_to_str()\fR,
-\fBpriv_str_to_set()\fR
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB:CONSTANTS\fR\fR
-.ad
-.RS 14n
-\fBPRIV_STR_SHORT\fR, \fBPRIV_STR_LIT\fR, \fBPRIV_STR_PORT\fR, \fBPRIV_ON\fR,
-\fBPRIV_OFF\fR, \fBPRIV_SET\fR, \fBPRIV_AWARE\fR, \fBPRIV_DEBUG\fR, plus
-constants for all privileges and privilege sets.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB:VARIABLES\fR\fR
-.ad
-.RS 14n
-\fB%PRIVILEGES\fR, \fB%PRIVSETS\fR
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB:ALL\fR\fR
-.ad
-.RS 14n
-\fB:SYSCALLS\fR, \fB:LIBCALLS\fR, \fB:CONSTANTS\fR, \fB:VARIABLES\fR
-.RE
-
-.SH ATTRIBUTES
-.sp
-.LP
-See \fBattributes\fR(5) for descriptions of the following attributes:
-.sp
-
-.sp
-.TS
-box;
-c | c
-l | l .
-ATTRIBUTE TYPE	ATTRIBUTE VALUE
-_
-Interface Stability	Evolving
-.TE
-
-.SH SEE ALSO
-.sp
-.LP
-\fBgetpflags\fR(2), \fBgetppriv\fR(2), \fBpriv_addset\fR(3C),
-\fBpriv_set\fR(3C), \fBpriv_str_to_set\fR(3C), \fBattributes\fR(5),
-\fBprivileges\fR(5)
--- old/usr/src/man/man3perl/Ucred.3perl	Tue Apr 22 05:37:45 2014
+++ /dev/null	Tue Apr 22 05:37:44 2014
@@ -1,235 +0,0 @@
-'\" te
-.\" Copyright (c) 2004, Sun Microsystems, Inc. All Rights Reserved.
-.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
-.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
-.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH UCRED 3PERL "Jan 30, 2004"
-.SH NAME
-Ucred \- Perl interface to User Credentials
-.SH SYNOPSIS
-.LP
-.nf
-use Sun::Solaris::Ucred qw(:ALL);
-.fi
-
-.SH DESCRIPTION
-.sp
-.LP
-This module provides wrappers for the Ucred-related system and library calls.
-.SS "Constants"
-.sp
-.LP
-None.
-.SS "Functions"
-.sp
-.ne 2
-.na
-\fB\fBucred_get($pid)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns the credential of the process specified by \fB$pid\fR if
-the process exists and the calling process is permitted to obtain the
-credentials of that process.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBgetpeerucred($fd)\fR\fR
-.ad
-.sp .6
-.RS 4n
-If \fB$fd\fR is a connected connection-oriented TLI endpoint, a connected
-\fBSOCK_STREAM\fR, or a \fBSOCK_SEQPKT\fR socket, \fBgetpeerucred()\fR returns
-the user credential of the peer at the time the connection was established, if
-availble.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBucred_geteuid($ucred)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns the effective uid of a user credential, if available.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBucred_getruid($ucred)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns the real uid of a user credential, if available.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBucred_getsuid($ucred)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns the saved uid of a user credential, if available.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBucred_getegid($ucred)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns the effective group of a user credential, if available.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBucred_getrgid($ucred)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns the real group of a user credential, if available.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBucred_getsgid($ucred)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns the saved group of a user credential, if available.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBucred_getgroups($ucred)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns the list of supplemental groups of a user credential, if
-available.An array of groups is returned in \fBARRAY\fR context; the number of
-groups is returned in \fBSCALAR\fR context.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBucred_getprivset($ucred, $which)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns the privilege set specified by \fB$which\fR of a user
-credential, if available.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBucred_getpflags($ucred, $flags)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns the value of a specific process flag of a user
-credential, if available.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBucred_getpid($ucred)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns the process ID of a user credential, if available.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBucred_getprojid($ucred)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns the project ID of a user credential, if available.
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fBucred_getzoneid($ucred)\fR\fR
-.ad
-.sp .6
-.RS 4n
-This function returns the zone ID of a user credential, if available.
-.RE
-
-.SS "Class methods"
-.sp
-.LP
-None.
-.SS "Object methods"
-.sp
-.LP
-None.
-.SS "Exports"
-.sp
-.LP
-By default nothing is exported from this module. The following tags can be used
-to selectively import constants and functions defined in this module:
-.sp
-.ne 2
-.na
-\fB\fB:SYSCALLS\fR\fR
-.ad
-.RS 13n
-\fBucred_get()\fR, \fBgetpeerucred()\fR
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB:LIBCALLS\fR\fR
-.ad
-.RS 13n
-\fBucred_geteuid()\fR, \fBucred_getruid()\fR, \fBucred_getsuid()\fR,
-\fBucred_getegid()\fR, \fBucred_getrgid()\fR, \fBucred_getsgid()\fR,
-\fBucred_getgroups()\fR, \fBucred_getprivset()\fR, \fBucred_getpflags()\fR,
-\fBucred_getpid()\fR, \fBucred_getzone()\fR
-.RE
-
-.sp
-.ne 2
-.na
-\fB\fB:ALL\fR\fR
-.ad
-.RS 13n
-\fB:SYSCALLS()\fR, \fB:LIBCALLS()\fR
-.RE
-
-.SH ATTRIBUTES
-.sp
-.LP
-See \fBattributes\fR(5) for descriptions of the following attributes:
-.sp
-
-.sp
-.TS
-box;
-c | c
-l | l .
-ATTRIBUTE TYPE	ATTRIBUTE VALUE
-_
-Interface Stability	Evolving
-.TE
-
-.SH SEE ALSO
-.sp
-.LP
-\fBgetpeerucred\fR(3C), \fBucred_get\fR(3C), \fBattributes\fR(5)
--- old/usr/src/man/man3uuid/Makefile	Tue Apr 22 05:37:45 2014
+++ new/usr/src/man/man3uuid/Makefile	Tue Apr 22 05:37:45 2014
@@ -12,6 +12,7 @@
 #
 # Copyright 2011, Richard Lowe
 # Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
+# Copyright 2014 Andrew Stormont.
 #
 
 include		$(SRC)/Makefile.master
@@ -28,7 +29,9 @@
 		uuid_is_null.3uuid		\
 		uuid_parse.3uuid		\
 		uuid_time.3uuid			\
-		uuid_unparse.3uuid
+		uuid_unparse.3uuid		\
+		uuid_unparse_lower.3uuid	\
+		uuid_unparse_upper.3uuid
 
 uuid_compare.3uuid		:= LINKSRC = uuid_clear.3uuid
 uuid_copy.3uuid			:= LINKSRC = uuid_clear.3uuid
@@ -39,6 +42,8 @@
 uuid_parse.3uuid		:= LINKSRC = uuid_clear.3uuid
 uuid_time.3uuid			:= LINKSRC = uuid_clear.3uuid
 uuid_unparse.3uuid		:= LINKSRC = uuid_clear.3uuid
+uuid_unparse_lower.3uuid	:= LINKSRC = uuid_clear.3uuid
+uuid_unparse_upper.3uuid	:= LINKSRC = uuid_clear.3uuid
 
 .KEEP_STATE:
 
--- old/usr/src/man/man3uuid/uuid_clear.3uuid	Tue Apr 22 05:37:45 2014
+++ new/usr/src/man/man3uuid/uuid_clear.3uuid	Tue Apr 22 05:37:45 2014
@@ -1,13 +1,15 @@
 '\" te
 .\" Copyright (c) 2006, Sun Microsystems, Inc. All Rights Reserved.
+.\" Copyright 2014 Andrew Stormont.
 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH UUID_CLEAR 3UUID "Jan 16, 2006"
+.TH UUID_CLEAR 3UUID "Apr 9, 2014"
 .SH NAME
 uuid_clear, uuid_compare, uuid_copy, uuid_generate, uuid_generate_random,
-uuid_generate_time, uuid_is_null, uuid_parse, uuid_time, uuid_unparse \-
-universally unique identifier (UUID) operations
+uuid_generate_time, uuid_is_null, uuid_parse, uuid_time, uuid_unparse,
+uuid_unparse_lower, uuid_unparse_upper \- universally unique identifier (UUID)
+operations
 .SH SYNOPSIS
 .LP
 .nf
@@ -62,6 +64,16 @@
 \fBvoid\fR \fBuuid_unparse\fR(\fBuuid_t\fR \fIuu\fR, \fBchar *\fR\fIout\fR);
 .fi
 
+.LP
+.nf
+\fBvoid\fR \fBuuid_unparse_lower\fR(\fBuuid_t\fR \fIuu\fR, \fBchar *\fR\fIout\fR);
+.fi
+
+.LP
+.nf
+\fBvoid\fR \fBuuid_unparse_upper\fR(\fBuuid_t\fR \fIuu\fR, \fBchar *\fR\fIout\fR);
+.fi
+
 .SH DESCRIPTION
 .sp
 .LP
@@ -121,11 +133,18 @@
 to by \fBret_tv\fR (see \fBgettimeofday\fR(3C)).
 .sp
 .LP
-The \fBuuid_unparse()\fR function converts the specified UUID \fIuu\fR from the
-internal binary format to a string of the length defined in the \fBuuid.h\fR
-macro, \fBUUID_PRINTABLE_STRING_LENGTH\fR, which includes the trailing null
-character. The resulting value is stored in the character string pointed to by
-\fIout\fR.
+The \fBuuid_unparse()\fR and \fBuuid_unparse_lower()\fR functions convert the
+specified UUID \fIuu\fR from the internal binary format to a lower case string
+of the length defined in the \fBuuid.h\fR macro,
+\fBUUID_PRINTABLE_STRING_LENGTH\fR, which includes the trailing null character.
+The resulting value is stored in the character string pointed to by \fIout\fR.
+.sp
+.LP
+The \fBuuid_unparse_upper()\fR function converts the specified UUID \fIuu\fR
+from the internal binary format to a upper case string of the length defined in
+the \fBuuid.h\fR macro, \fBUUID_PRINTABLE_STRING_LENGTH\fR, which includes the
+trailing null character. The resulting value is stored in the character string
+pointed to by \fIout\fR.
 .SH ATTRIBUTES
 .sp
 .LP
--- old/usr/src/pkg/manifests/system-dtrace-tests.mf	Tue Apr 22 05:37:46 2014
+++ new/usr/src/pkg/manifests/system-dtrace-tests.mf	Tue Apr 22 05:37:46 2014
@@ -21,7 +21,7 @@
 
 #
 # Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
-# Copyright (c) 2012 by Delphix. All rights reserved.
+# Copyright (c) 2012, 2014 by Delphix. All rights reserved.
 #
 
 set name=pkg.fmri value=pkg:/system/dtrace/tests@$(PKGVERS)
@@ -1944,6 +1944,11 @@
     mode=0444
 file path=opt/SUNWdtrt/tst/common/types/err.D_DECL_COMBO.badtype4.d mode=0444
 file path=opt/SUNWdtrt/tst/common/types/err.D_DECL_COMBO.badtype5.d mode=0444
+file path=opt/SUNWdtrt/tst/common/types/err.D_DECL_COMBO.rptdattr1.d mode=0444
+file path=opt/SUNWdtrt/tst/common/types/err.D_DECL_COMBO.rptdattr2.d mode=0444
+file path=opt/SUNWdtrt/tst/common/types/err.D_DECL_COMBO.rptdattr3.d mode=0444
+file path=opt/SUNWdtrt/tst/common/types/err.D_DECL_COMBO.rptdattr4.d mode=0444
+file path=opt/SUNWdtrt/tst/common/types/err.D_DECL_COMBO.rptdattr5.d mode=0444
 file path=opt/SUNWdtrt/tst/common/types/err.D_DECL_ENCONST.badeval.d mode=0444
 file path=opt/SUNWdtrt/tst/common/types/err.D_DECL_ENOFLOW.enoflow.d mode=0444
 file path=opt/SUNWdtrt/tst/common/types/err.D_DECL_ENOFLOW.enuflow.d mode=0444
@@ -1968,6 +1973,8 @@
 file path=opt/SUNWdtrt/tst/common/types/err.D_UNKNOWN.dupstruct.d mode=0444
 file path=opt/SUNWdtrt/tst/common/types/err.D_XLATE_REDECL.ResultDynType.d \
     mode=0444
+file path=opt/SUNWdtrt/tst/common/types/err.EDT_NOTYPE.cmbdatt1.d mode=0444
+file path=opt/SUNWdtrt/tst/common/types/err.EDT_NOTYPE.cmbdatt2.d mode=0444
 file path=opt/SUNWdtrt/tst/common/types/tst.assignops.d mode=0444
 file path=opt/SUNWdtrt/tst/common/types/tst.badshiftops.d mode=0444
 file path=opt/SUNWdtrt/tst/common/types/tst.basics.d mode=0444
--- old/usr/src/pkg/manifests/system-library.man3uuid.inc	Tue Apr 22 05:37:46 2014
+++ new/usr/src/pkg/manifests/system-library.man3uuid.inc	Tue Apr 22 05:37:46 2014
@@ -12,6 +12,7 @@
 #
 # Copyright 2011, Richard Lowe
 # Copyright 2012 Nexenta Systems, Inc. All rights reserved.
+# Copyright 2014 Andrew Stormont.
 #
 
 file path=usr/share/man/man3uuid/uuid_clear.3uuid
@@ -26,3 +27,7 @@
 link path=usr/share/man/man3uuid/uuid_parse.3uuid target=uuid_clear.3uuid
 link path=usr/share/man/man3uuid/uuid_time.3uuid target=uuid_clear.3uuid
 link path=usr/share/man/man3uuid/uuid_unparse.3uuid target=uuid_clear.3uuid
+link path=usr/share/man/man3uuid/uuid_unparse_lower.3uuid \
+    target=uuid_clear.3uuid
+link path=usr/share/man/man3uuid/uuid_unparse_upper.3uuid \
+    target=uuid_clear.3uuid
--- old/usr/src/uts/common/fs/zfs/dbuf.c	Tue Apr 22 05:37:46 2014
+++ new/usr/src/uts/common/fs/zfs/dbuf.c	Tue Apr 22 05:37:46 2014
@@ -21,7 +21,7 @@
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
  * Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
  * Copyright (c) 2013, Joyent, Inc. All rights reserved.
  */
@@ -40,6 +40,7 @@
 #include <sys/dmu_zfetch.h>
 #include <sys/sa.h>
 #include <sys/sa_impl.h>
+#include <sys/range_tree.h>
 
 /*
  * Number of times that zfs_free_range() took the slow path while doing
@@ -1177,7 +1178,10 @@
 	if (db->db_level == 0 && db->db_blkid != DMU_BONUS_BLKID &&
 	    db->db_blkid != DMU_SPILL_BLKID) {
 		mutex_enter(&dn->dn_mtx);
-		dnode_clear_range(dn, db->db_blkid, 1, tx);
+		if (dn->dn_free_ranges[txgoff] != NULL) {
+			range_tree_clear(dn->dn_free_ranges[txgoff],
+			    db->db_blkid, 1);
+		}
 		mutex_exit(&dn->dn_mtx);
 		db->db_freed_in_flight = FALSE;
 	}
--- old/usr/src/uts/common/fs/zfs/ddt.c	Tue Apr 22 05:37:46 2014
+++ new/usr/src/uts/common/fs/zfs/ddt.c	Tue Apr 22 05:37:46 2014
@@ -21,7 +21,7 @@
 
 /*
  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
  */
 
 #include <sys/zfs_context.h>
@@ -402,7 +402,7 @@
 
 	ddt_stat_generate(ddt, dde, &dds);
 
-	bucket = highbit(dds.dds_ref_blocks) - 1;
+	bucket = highbit64(dds.dds_ref_blocks) - 1;
 	ASSERT(bucket >= 0);
 
 	ddh = &ddt->ddt_histogram[dde->dde_type][dde->dde_class];
--- old/usr/src/uts/common/fs/zfs/dnode.c	Tue Apr 22 05:37:46 2014
+++ new/usr/src/uts/common/fs/zfs/dnode.c	Tue Apr 22 05:37:46 2014
@@ -20,7 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
  */
 
 #include <sys/zfs_context.h>
@@ -35,9 +35,8 @@
 #include <sys/spa.h>
 #include <sys/zio.h>
 #include <sys/dmu_zfetch.h>
+#include <sys/range_tree.h>
 
-static int free_range_compar(const void *node1, const void *node2);
-
 static kmem_cache_t *dnode_cache;
 /*
  * Define DNODE_STATS to turn on statistic gathering. By default, it is only
@@ -90,9 +89,7 @@
 
 	for (i = 0; i < TXG_SIZE; i++) {
 		list_link_init(&dn->dn_dirty_link[i]);
-		avl_create(&dn->dn_ranges[i], free_range_compar,
-		    sizeof (free_range_t),
-		    offsetof(struct free_range, fr_node));
+		dn->dn_free_ranges[i] = NULL;
 		list_create(&dn->dn_dirty_records[i],
 		    sizeof (dbuf_dirty_record_t),
 		    offsetof(dbuf_dirty_record_t, dr_dirty_node));
@@ -140,7 +137,7 @@
 
 	for (i = 0; i < TXG_SIZE; i++) {
 		ASSERT(!list_link_active(&dn->dn_dirty_link[i]));
-		avl_destroy(&dn->dn_ranges[i]);
+		ASSERT3P(dn->dn_free_ranges[i], ==, NULL);
 		list_destroy(&dn->dn_dirty_records[i]);
 		ASSERT0(dn->dn_next_nblkptr[i]);
 		ASSERT0(dn->dn_next_nlevels[i]);
@@ -313,19 +310,6 @@
 	}
 }
 
-static int
-free_range_compar(const void *node1, const void *node2)
-{
-	const free_range_t *rp1 = node1;
-	const free_range_t *rp2 = node2;
-
-	if (rp1->fr_blkid < rp2->fr_blkid)
-		return (-1);
-	else if (rp1->fr_blkid > rp2->fr_blkid)
-		return (1);
-	else return (0);
-}
-
 void
 dnode_setbonuslen(dnode_t *dn, int newsize, dmu_tx_t *tx)
 {
@@ -374,7 +358,7 @@
 	    1<<(sizeof (dn->dn_phys->dn_datablkszsec) * 8));
 	dn->dn_datablksz = size;
 	dn->dn_datablkszsec = size >> SPA_MINBLOCKSHIFT;
-	dn->dn_datablkshift = ISP2(size) ? highbit(size - 1) : 0;
+	dn->dn_datablkshift = ISP2(size) ? highbit64(size - 1) : 0;
 }
 
 static dnode_t *
@@ -530,7 +514,7 @@
 		ASSERT0(dn->dn_next_blksz[i]);
 		ASSERT(!list_link_active(&dn->dn_dirty_link[i]));
 		ASSERT3P(list_head(&dn->dn_dirty_records[i]), ==, NULL);
-		ASSERT0(avl_numnodes(&dn->dn_ranges[i]));
+		ASSERT3P(dn->dn_free_ranges[i], ==, NULL);
 	}
 
 	dn->dn_type = ot;
@@ -694,7 +678,8 @@
 		list_move_tail(&ndn->dn_dirty_records[i],
 		    &odn->dn_dirty_records[i]);
 	}
-	bcopy(&odn->dn_ranges[0], &ndn->dn_ranges[0], sizeof (odn->dn_ranges));
+	bcopy(&odn->dn_free_ranges[0], &ndn->dn_free_ranges[0],
+	    sizeof (odn->dn_free_ranges));
 	ndn->dn_allocated_txg = odn->dn_allocated_txg;
 	ndn->dn_free_txg = odn->dn_free_txg;
 	ndn->dn_assigned_txg = odn->dn_assigned_txg;
@@ -757,8 +742,7 @@
 		list_create(&odn->dn_dirty_records[i],
 		    sizeof (dbuf_dirty_record_t),
 		    offsetof(dbuf_dirty_record_t, dr_dirty_node));
-		odn->dn_ranges[i].avl_root = NULL;
-		odn->dn_ranges[i].avl_numnodes = 0;
+		odn->dn_free_ranges[i] = NULL;
 		odn->dn_next_nlevels[i] = 0;
 		odn->dn_next_indblkshift[i] = 0;
 		odn->dn_next_bonustype[i] = 0;
@@ -1462,59 +1446,6 @@
 }
 
 void
-dnode_clear_range(dnode_t *dn, uint64_t blkid, uint64_t nblks, dmu_tx_t *tx)
-{
-	avl_tree_t *tree = &dn->dn_ranges[tx->tx_txg&TXG_MASK];
-	avl_index_t where;
-	free_range_t *rp;
-	free_range_t rp_tofind;
-	uint64_t endblk = blkid + nblks;
-
-	ASSERT(MUTEX_HELD(&dn->dn_mtx));
-	ASSERT(nblks <= UINT64_MAX - blkid); /* no overflow */
-
-	dprintf_dnode(dn, "blkid=%llu nblks=%llu txg=%llu\n",
-	    blkid, nblks, tx->tx_txg);
-	rp_tofind.fr_blkid = blkid;
-	rp = avl_find(tree, &rp_tofind, &where);
-	if (rp == NULL)
-		rp = avl_nearest(tree, where, AVL_BEFORE);
-	if (rp == NULL)
-		rp = avl_nearest(tree, where, AVL_AFTER);
-
-	while (rp && (rp->fr_blkid <= blkid + nblks)) {
-		uint64_t fr_endblk = rp->fr_blkid + rp->fr_nblks;
-		free_range_t *nrp = AVL_NEXT(tree, rp);
-
-		if (blkid <= rp->fr_blkid && endblk >= fr_endblk) {
-			/* clear this entire range */
-			avl_remove(tree, rp);
-			kmem_free(rp, sizeof (free_range_t));
-		} else if (blkid <= rp->fr_blkid &&
-		    endblk > rp->fr_blkid && endblk < fr_endblk) {
-			/* clear the beginning of this range */
-			rp->fr_blkid = endblk;
-			rp->fr_nblks = fr_endblk - endblk;
-		} else if (blkid > rp->fr_blkid && blkid < fr_endblk &&
-		    endblk >= fr_endblk) {
-			/* clear the end of this range */
-			rp->fr_nblks = blkid - rp->fr_blkid;
-		} else if (blkid > rp->fr_blkid && endblk < fr_endblk) {
-			/* clear a chunk out of this range */
-			free_range_t *new_rp =
-			    kmem_alloc(sizeof (free_range_t), KM_SLEEP);
-
-			new_rp->fr_blkid = endblk;
-			new_rp->fr_nblks = fr_endblk - endblk;
-			avl_insert_here(tree, new_rp, rp, AVL_AFTER);
-			rp->fr_nblks = blkid - rp->fr_blkid;
-		}
-		/* there may be no overlap */
-		rp = nrp;
-	}
-}
-
-void
 dnode_free_range(dnode_t *dn, uint64_t off, uint64_t len, dmu_tx_t *tx)
 {
 	dmu_buf_impl_t *db;
@@ -1664,22 +1595,15 @@
 	 * We will finish up this free operation in the syncing phase.
 	 */
 	mutex_enter(&dn->dn_mtx);
-	dnode_clear_range(dn, blkid, nblks, tx);
-	{
-		free_range_t *rp, *found;
-		avl_index_t where;
-		avl_tree_t *tree = &dn->dn_ranges[tx->tx_txg&TXG_MASK];
-
-		/* Add new range to dn_ranges */
-		rp = kmem_alloc(sizeof (free_range_t), KM_SLEEP);
-		rp->fr_blkid = blkid;
-		rp->fr_nblks = nblks;
-		found = avl_find(tree, rp, &where);
-		ASSERT(found == NULL);
-		avl_insert(tree, rp, where);
-		dprintf_dnode(dn, "blkid=%llu nblks=%llu txg=%llu\n",
-		    blkid, nblks, tx->tx_txg);
+	int txgoff = tx->tx_txg & TXG_MASK;
+	if (dn->dn_free_ranges[txgoff] == NULL) {
+		dn->dn_free_ranges[txgoff] =
+		    range_tree_create(NULL, NULL, &dn->dn_mtx);
 	}
+	range_tree_clear(dn->dn_free_ranges[txgoff], blkid, nblks);
+	range_tree_add(dn->dn_free_ranges[txgoff], blkid, nblks);
+	dprintf_dnode(dn, "blkid=%llu nblks=%llu txg=%llu\n",
+	    blkid, nblks, tx->tx_txg);
 	mutex_exit(&dn->dn_mtx);
 
 	dbuf_free_range(dn, blkid, blkid + nblks - 1, tx);
@@ -1707,7 +1631,6 @@
 uint64_t
 dnode_block_freed(dnode_t *dn, uint64_t blkid)
 {
-	free_range_t range_tofind;
 	void *dp = spa_get_dsl(dn->dn_objset->os_spa);
 	int i;
 
@@ -1727,21 +1650,11 @@
 	if (blkid == DMU_SPILL_BLKID)
 		return (dnode_spill_freed(dn));
 
-	range_tofind.fr_blkid = blkid;
 	mutex_enter(&dn->dn_mtx);
 	for (i = 0; i < TXG_SIZE; i++) {
-		free_range_t *range_found;
-		avl_index_t idx;
-
-		range_found = avl_find(&dn->dn_ranges[i], &range_tofind, &idx);
-		if (range_found) {
-			ASSERT(range_found->fr_nblks > 0);
+		if (dn->dn_free_ranges[i] != NULL &&
+		    range_tree_contains(dn->dn_free_ranges[i], blkid, 1))
 			break;
-		}
-		range_found = avl_nearest(&dn->dn_ranges[i], idx, AVL_BEFORE);
-		if (range_found &&
-		    range_found->fr_blkid + range_found->fr_nblks > blkid)
-			break;
 	}
 	mutex_exit(&dn->dn_mtx);
 	return (i < TXG_SIZE);
--- old/usr/src/uts/common/fs/zfs/dnode_sync.c	Tue Apr 22 05:37:46 2014
+++ new/usr/src/uts/common/fs/zfs/dnode_sync.c	Tue Apr 22 05:37:46 2014
@@ -21,7 +21,7 @@
 
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
  */
 
 #include <sys/zfs_context.h>
@@ -32,6 +32,7 @@
 #include <sys/dmu_objset.h>
 #include <sys/dsl_dataset.h>
 #include <sys/spa.h>
+#include <sys/range_tree.h>
 #include <sys/zfeature.h>
 
 static void
@@ -318,7 +319,7 @@
  * and "free" all the blocks contained there.
  */
 static void
-dnode_sync_free_range(dnode_t *dn, uint64_t blkid, uint64_t nblks,
+dnode_sync_free_range_impl(dnode_t *dn, uint64_t blkid, uint64_t nblks,
     dmu_tx_t *tx)
 {
 	blkptr_t *bp = dn->dn_phys->dn_blkptr;
@@ -376,6 +377,22 @@
 	}
 }
 
+typedef struct dnode_sync_free_range_arg {
+	dnode_t *dsfra_dnode;
+	dmu_tx_t *dsfra_tx;
+} dnode_sync_free_range_arg_t;
+
+static void
+dnode_sync_free_range(void *arg, uint64_t blkid, uint64_t nblks)
+{
+	dnode_sync_free_range_arg_t *dsfra = arg;
+	dnode_t *dn = dsfra->dsfra_dnode;
+
+	mutex_exit(&dn->dn_mtx);
+	dnode_sync_free_range_impl(dn, blkid, nblks, dsfra->dsfra_tx);
+	mutex_enter(&dn->dn_mtx);
+}
+
 /*
  * Try to kick all the dnode's dbufs out of the cache...
  */
@@ -533,7 +550,6 @@
 void
 dnode_sync(dnode_t *dn, dmu_tx_t *tx)
 {
-	free_range_t *rp;
 	dnode_phys_t *dnp = dn->dn_phys;
 	int txgoff = tx->tx_txg & TXG_MASK;
 	list_t *list = &dn->dn_dirty_records[txgoff];
@@ -591,9 +607,9 @@
 		    SPA_MINBLOCKSIZE) == 0);
 		ASSERT(BP_IS_HOLE(&dnp->dn_blkptr[0]) ||
 		    dn->dn_maxblkid == 0 || list_head(list) != NULL ||
-		    avl_last(&dn->dn_ranges[txgoff]) ||
 		    dn->dn_next_blksz[txgoff] >> SPA_MINBLOCKSHIFT ==
-		    dnp->dn_datablkszsec);
+		    dnp->dn_datablkszsec ||
+		    range_tree_space(dn->dn_free_ranges[txgoff]) != 0);
 		dnp->dn_datablkszsec =
 		    dn->dn_next_blksz[txgoff] >> SPA_MINBLOCKSHIFT;
 		dn->dn_next_blksz[txgoff] = 0;
@@ -652,13 +668,16 @@
 	}
 
 	/* process all the "freed" ranges in the file */
-	while (rp = avl_last(&dn->dn_ranges[txgoff])) {
-		dnode_sync_free_range(dn, rp->fr_blkid, rp->fr_nblks, tx);
-		/* grab the mutex so we don't race with dnode_block_freed() */
+	if (dn->dn_free_ranges[txgoff] != NULL) {
+		dnode_sync_free_range_arg_t dsfra;
+		dsfra.dsfra_dnode = dn;
+		dsfra.dsfra_tx = tx;
 		mutex_enter(&dn->dn_mtx);
-		avl_remove(&dn->dn_ranges[txgoff], rp);
+		range_tree_vacate(dn->dn_free_ranges[txgoff],
+		    dnode_sync_free_range, &dsfra);
+		range_tree_destroy(dn->dn_free_ranges[txgoff]);
+		dn->dn_free_ranges[txgoff] = NULL;
 		mutex_exit(&dn->dn_mtx);
-		kmem_free(rp, sizeof (free_range_t));
 	}
 
 	if (freeing_dnode) {
--- old/usr/src/uts/common/fs/zfs/metaslab.c	Tue Apr 22 05:37:46 2014
+++ new/usr/src/uts/common/fs/zfs/metaslab.c	Tue Apr 22 05:37:46 2014
@@ -20,7 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2014 by Delphix. All rights reserved.
  * Copyright (c) 2013 by Saso Kiselkov. All rights reserved.
  */
 
@@ -693,7 +693,7 @@
 	 * may exist in the same region.
 	 */
 	uint64_t align = size & -size;
-	uint64_t *cursor = &msp->ms_lbas[highbit(align) - 1];
+	uint64_t *cursor = &msp->ms_lbas[highbit64(align) - 1];
 	avl_tree_t *t = &msp->ms_tree->rt_root;
 
 	return (metaslab_block_picker(t, cursor, size, align));
@@ -730,7 +730,7 @@
 	 * may exist in the same region.
 	 */
 	uint64_t align = size & -size;
-	uint64_t *cursor = &msp->ms_lbas[highbit(align) - 1];
+	uint64_t *cursor = &msp->ms_lbas[highbit64(align) - 1];
 	range_tree_t *rt = msp->ms_tree;
 	avl_tree_t *t = &rt->rt_root;
 	uint64_t max_size = metaslab_block_maxsize(msp);
@@ -846,7 +846,7 @@
 	avl_tree_t *t = &msp->ms_tree->rt_root;
 	avl_index_t where;
 	range_seg_t *rs, rsearch;
-	uint64_t hbit = highbit(size);
+	uint64_t hbit = highbit64(size);
 	uint64_t *cursor = &msp->ms_lbas[hbit - 1];
 	uint64_t max_size = metaslab_block_maxsize(msp);
 
@@ -1089,7 +1089,7 @@
 	if (msp->ms_sm == NULL) {
 		vdev_t *vd = msp->ms_group->mg_vd;
 
-		i = highbit(msp->ms_size) - 1;
+		i = highbit64(msp->ms_size) - 1;
 		sectors = msp->ms_size >> vd->vdev_ashift;
 		return (sectors * i * vd->vdev_ashift);
 	}
--- old/usr/src/uts/common/fs/zfs/range_tree.c	Tue Apr 22 05:37:46 2014
+++ new/usr/src/uts/common/fs/zfs/range_tree.c	Tue Apr 22 05:37:46 2014
@@ -23,7 +23,7 @@
  * Use is subject to license terms.
  */
 /*
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2013, 2014 by Delphix. All rights reserved.
  */
 
 #include <sys/zfs_context.h>
@@ -60,7 +60,7 @@
 	for (rs = avl_first(&rt->rt_root); rs != NULL;
 	    rs = AVL_NEXT(&rt->rt_root, rs)) {
 		uint64_t size = rs->rs_end - rs->rs_start;
-		int idx	= highbit(size) - 1;
+		int idx	= highbit64(size) - 1;
 
 		hist[idx]++;
 		ASSERT3U(hist[idx], !=, 0);
@@ -79,7 +79,7 @@
 range_tree_stat_incr(range_tree_t *rt, range_seg_t *rs)
 {
 	uint64_t size = rs->rs_end - rs->rs_start;
-	int idx = highbit(size) - 1;
+	int idx = highbit64(size) - 1;
 
 	ASSERT3U(idx, <,
 	    sizeof (rt->rt_histogram) / sizeof (*rt->rt_histogram));
@@ -93,7 +93,7 @@
 range_tree_stat_decr(range_tree_t *rt, range_seg_t *rs)
 {
 	uint64_t size = rs->rs_end - rs->rs_start;
-	int idx = highbit(size) - 1;
+	int idx = highbit64(size) - 1;
 
 	ASSERT3U(idx, <,
 	    sizeof (rt->rt_histogram) / sizeof (*rt->rt_histogram));
@@ -299,10 +299,10 @@
 }
 
 static range_seg_t *
-range_tree_find(range_tree_t *rt, uint64_t start, uint64_t size,
-    avl_index_t *wherep)
+range_tree_find_impl(range_tree_t *rt, uint64_t start, uint64_t size)
 {
-	range_seg_t rsearch, *rs;
+	avl_index_t where;
+	range_seg_t rsearch;
 	uint64_t end = start + size;
 
 	ASSERT(MUTEX_HELD(rt->rt_lock));
@@ -310,9 +310,14 @@
 
 	rsearch.rs_start = start;
 	rsearch.rs_end = end;
-	rs = avl_find(&rt->rt_root, &rsearch, wherep);
+	return (avl_find(&rt->rt_root, &rsearch, &where));
+}
 
-	if (rs != NULL && rs->rs_start <= start && rs->rs_end >= end)
+static range_seg_t *
+range_tree_find(range_tree_t *rt, uint64_t start, uint64_t size)
+{
+	range_seg_t *rs = range_tree_find_impl(rt, start, size);
+	if (rs != NULL && rs->rs_start <= start && rs->rs_end >= start + size)
 		return (rs);
 	return (NULL);
 }
@@ -321,10 +326,9 @@
 range_tree_verify(range_tree_t *rt, uint64_t off, uint64_t size)
 {
 	range_seg_t *rs;
-	avl_index_t where;
 
 	mutex_enter(rt->rt_lock);
-	rs = range_tree_find(rt, off, size, &where);
+	rs = range_tree_find(rt, off, size);
 	if (rs != NULL)
 		panic("freeing free block; rs=%p", (void *)rs);
 	mutex_exit(rt->rt_lock);
@@ -333,9 +337,23 @@
 boolean_t
 range_tree_contains(range_tree_t *rt, uint64_t start, uint64_t size)
 {
-	avl_index_t where;
+	return (range_tree_find(rt, start, size) != NULL);
+}
 
-	return (range_tree_find(rt, start, size, &where) != NULL);
+/*
+ * Ensure that this range is not in the tree, regardless of whether
+ * it is currently in the tree.
+ */
+void
+range_tree_clear(range_tree_t *rt, uint64_t start, uint64_t size)
+{
+	range_seg_t *rs;
+
+	while ((rs = range_tree_find_impl(rt, start, size)) != NULL) {
+		uint64_t free_start = MAX(rs->rs_start, start);
+		uint64_t free_end = MIN(rs->rs_end, start + size);
+		range_tree_remove(rt, free_start, free_end - free_start);
+	}
 }
 
 void
--- old/usr/src/uts/common/fs/zfs/spa.c	Tue Apr 22 05:37:47 2014
+++ new/usr/src/uts/common/fs/zfs/spa.c	Tue Apr 22 05:37:47 2014
@@ -21,7 +21,7 @@
 
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2014 by Delphix. All rights reserved.
  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
  */
 
@@ -129,7 +129,7 @@
 const zio_taskq_info_t zio_taskqs[ZIO_TYPES][ZIO_TASKQ_TYPES] = {
 	/* ISSUE	ISSUE_HIGH	INTR		INTR_HIGH */
 	{ ZTI_ONE,	ZTI_NULL,	ZTI_ONE,	ZTI_NULL }, /* NULL */
-	{ ZTI_N(8),	ZTI_NULL,	ZTI_BATCH,	ZTI_NULL }, /* READ */
+	{ ZTI_N(8),	ZTI_NULL,	ZTI_P(12, 8),	ZTI_NULL }, /* READ */
 	{ ZTI_BATCH,	ZTI_N(5),	ZTI_N(8),	ZTI_N(5) }, /* WRITE */
 	{ ZTI_P(12, 8),	ZTI_NULL,	ZTI_ONE,	ZTI_NULL }, /* FREE */
 	{ ZTI_ONE,	ZTI_NULL,	ZTI_ONE,	ZTI_NULL }, /* CLAIM */
--- old/usr/src/uts/common/fs/zfs/space_map.c	Tue Apr 22 05:37:47 2014
+++ new/usr/src/uts/common/fs/zfs/space_map.c	Tue Apr 22 05:37:47 2014
@@ -23,7 +23,7 @@
  * Use is subject to license terms.
  */
 /*
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
  */
 
 #include <sys/zfs_context.h>
@@ -267,7 +267,7 @@
 		 * adding more blocks. The block size can grow until it
 		 * reaches space_map_max_blksz.
 		 */
-		newsz = ISP2(size) ? size : 1ULL << highbit(size);
+		newsz = ISP2(size) ? size : 1ULL << highbit64(size);
 		if (newsz > space_map_max_blksz)
 			newsz = space_map_max_blksz;
 
--- old/usr/src/uts/common/fs/zfs/sys/dnode.h	Tue Apr 22 05:37:47 2014
+++ new/usr/src/uts/common/fs/zfs/sys/dnode.h	Tue Apr 22 05:37:47 2014
@@ -20,7 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
  */
 
 #ifndef	_SYS_DNODE_H
@@ -198,7 +198,7 @@
 	/* protected by dn_mtx: */
 	kmutex_t dn_mtx;
 	list_t dn_dirty_records[TXG_SIZE];
-	avl_tree_t dn_ranges[TXG_SIZE];
+	struct range_tree *dn_free_ranges[TXG_SIZE];
 	uint64_t dn_allocated_txg;
 	uint64_t dn_free_txg;
 	uint64_t dn_assigned_txg;
@@ -280,8 +280,6 @@
 void dnode_verify(dnode_t *dn);
 int dnode_set_blksz(dnode_t *dn, uint64_t size, int ibs, dmu_tx_t *tx);
 void dnode_free_range(dnode_t *dn, uint64_t off, uint64_t len, dmu_tx_t *tx);
-void dnode_clear_range(dnode_t *dn, uint64_t blkid,
-    uint64_t nblks, dmu_tx_t *tx);
 void dnode_diduse_space(dnode_t *dn, int64_t space);
 void dnode_willuse_space(dnode_t *dn, int64_t space, dmu_tx_t *tx);
 void dnode_new_blkid(dnode_t *dn, uint64_t blkid, dmu_tx_t *tx, boolean_t);
--- old/usr/src/uts/common/fs/zfs/sys/range_tree.h	Tue Apr 22 05:37:47 2014
+++ new/usr/src/uts/common/fs/zfs/sys/range_tree.h	Tue Apr 22 05:37:47 2014
@@ -24,7 +24,7 @@
  */
 
 /*
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2013, 2014 by Delphix. All rights reserved.
  */
 
 #ifndef _SYS_RANGE_TREE_H
@@ -85,6 +85,7 @@
 
 void range_tree_add(void *arg, uint64_t start, uint64_t size);
 void range_tree_remove(void *arg, uint64_t start, uint64_t size);
+void range_tree_clear(range_tree_t *rt, uint64_t start, uint64_t size);
 
 void range_tree_vacate(range_tree_t *rt, range_tree_func_t *func, void *arg);
 void range_tree_walk(range_tree_t *rt, range_tree_func_t *func, void *arg);
--- old/usr/src/uts/common/fs/zfs/vdev.c	Tue Apr 22 05:37:47 2014
+++ new/usr/src/uts/common/fs/zfs/vdev.c	Tue Apr 22 05:37:47 2014
@@ -22,7 +22,7 @@
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2014 by Delphix. All rights reserved.
  */
 
 #include <sys/zfs_context.h>
@@ -1553,7 +1553,7 @@
 	/*
 	 * Aim for roughly 200 metaslabs per vdev.
 	 */
-	vd->vdev_ms_shift = highbit(vd->vdev_asize / 200);
+	vd->vdev_ms_shift = highbit64(vd->vdev_asize / 200);
 	vd->vdev_ms_shift = MAX(vd->vdev_ms_shift, SPA_MAXBLOCKSHIFT);
 }
 
--- old/usr/src/uts/common/fs/zfs/vdev_disk.c	Tue Apr 22 05:37:47 2014
+++ new/usr/src/uts/common/fs/zfs/vdev_disk.c	Tue Apr 22 05:37:47 2014
@@ -20,7 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
  * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
  * Copyright (c) 2013 Joyent, Inc.  All rights reserved.
  */
@@ -548,7 +548,7 @@
 		pbsize = DEV_BSIZE;
 	}
 
-	*ashift = highbit(MAX(pbsize, SPA_MINBLOCKSIZE)) - 1;
+	*ashift = highbit64(MAX(pbsize, SPA_MINBLOCKSIZE)) - 1;
 
 	if (vd->vdev_wholedisk == 1) {
 		int wce = 1;
--- old/usr/src/uts/common/fs/zfs/zap.c	Tue Apr 22 05:37:47 2014
+++ new/usr/src/uts/common/fs/zfs/zap.c	Tue Apr 22 05:37:47 2014
@@ -20,7 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2012, 2014 by Delphix. All rights reserved.
  */
 
 /*
@@ -84,7 +84,7 @@
 	    &zap->zap_f.zap_phys, zap_evict);
 
 	mutex_init(&zap->zap_f.zap_num_entries_mtx, 0, 0, 0);
-	zap->zap_f.zap_block_shift = highbit(zap->zap_dbuf->db_size) - 1;
+	zap->zap_f.zap_block_shift = highbit64(zap->zap_dbuf->db_size) - 1;
 
 	zp = zap->zap_f.zap_phys;
 	/*
@@ -458,7 +458,7 @@
 	rw_init(&l->l_rwlock, 0, 0, 0);
 	rw_enter(&l->l_rwlock, RW_WRITER);
 	l->l_blkid = blkid;
-	l->l_bs = highbit(db->db_size)-1;
+	l->l_bs = highbit64(db->db_size) - 1;
 	l->l_dbuf = db;
 	l->l_phys = NULL;
 
--- old/usr/src/uts/common/fs/zfs/zap_leaf.c	Tue Apr 22 05:37:47 2014
+++ new/usr/src/uts/common/fs/zfs/zap_leaf.c	Tue Apr 22 05:37:47 2014
@@ -20,7 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2013, 2014 by Delphix. All rights reserved.
  */
 
 /*
@@ -105,16 +105,16 @@
 {
 	int i;
 	zap_leaf_t l;
-	l.l_bs = highbit(size)-1;
+	l.l_bs = highbit64(size) - 1;
 	l.l_phys = buf;
 
-	buf->l_hdr.lh_block_type = 	BSWAP_64(buf->l_hdr.lh_block_type);
-	buf->l_hdr.lh_prefix = 		BSWAP_64(buf->l_hdr.lh_prefix);
-	buf->l_hdr.lh_magic = 		BSWAP_32(buf->l_hdr.lh_magic);
-	buf->l_hdr.lh_nfree = 		BSWAP_16(buf->l_hdr.lh_nfree);
-	buf->l_hdr.lh_nentries = 	BSWAP_16(buf->l_hdr.lh_nentries);
-	buf->l_hdr.lh_prefix_len = 	BSWAP_16(buf->l_hdr.lh_prefix_len);
-	buf->l_hdr.lh_freelist = 	BSWAP_16(buf->l_hdr.lh_freelist);
+	buf->l_hdr.lh_block_type =	BSWAP_64(buf->l_hdr.lh_block_type);
+	buf->l_hdr.lh_prefix =		BSWAP_64(buf->l_hdr.lh_prefix);
+	buf->l_hdr.lh_magic =		BSWAP_32(buf->l_hdr.lh_magic);
+	buf->l_hdr.lh_nfree =		BSWAP_16(buf->l_hdr.lh_nfree);
+	buf->l_hdr.lh_nentries =	BSWAP_16(buf->l_hdr.lh_nentries);
+	buf->l_hdr.lh_prefix_len =	BSWAP_16(buf->l_hdr.lh_prefix_len);
+	buf->l_hdr.lh_freelist =	BSWAP_16(buf->l_hdr.lh_freelist);
 
 	for (i = 0; i < ZAP_LEAF_HASH_NUMENTRIES(&l); i++)
 		buf->l_hash[i] = BSWAP_16(buf->l_hash[i]);
@@ -157,7 +157,7 @@
 {
 	int i;
 
-	l->l_bs = highbit(l->l_dbuf->db_size)-1;
+	l->l_bs = highbit64(l->l_dbuf->db_size) - 1;
 	zap_memset(&l->l_phys->l_hdr, 0, sizeof (struct zap_leaf_header));
 	zap_memset(l->l_phys->l_hash, CHAIN_END, 2*ZAP_LEAF_HASH_NUMENTRIES(l));
 	for (i = 0; i < ZAP_LEAF_NUMCHUNKS(l); i++) {
--- old/usr/src/uts/common/fs/zfs/zap_micro.c	Tue Apr 22 05:37:48 2014
+++ new/usr/src/uts/common/fs/zfs/zap_micro.c	Tue Apr 22 05:37:48 2014
@@ -20,7 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2014 by Delphix. All rights reserved.
  */
 
 #include <sys/zio.h>
@@ -374,7 +374,7 @@
 
 	if (*(uint64_t *)db->db_data != ZBT_MICRO) {
 		mutex_init(&zap->zap_f.zap_num_entries_mtx, 0, 0, 0);
-		zap->zap_f.zap_block_shift = highbit(db->db_size) - 1;
+		zap->zap_f.zap_block_shift = highbit64(db->db_size) - 1;
 	} else {
 		zap->zap_ismicro = TRUE;
 	}
--- old/usr/src/uts/common/fs/zfs/zio.c	Tue Apr 22 05:37:48 2014
+++ new/usr/src/uts/common/fs/zfs/zio.c	Tue Apr 22 05:37:48 2014
@@ -20,7 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2011, 2014 by Delphix. All rights reserved.
  * Copyright (c) 2011 Nexenta Systems, Inc. All rights reserved.
  * Copyright 2013 Joyent, Inc. All rights reserved.
  */
@@ -1266,7 +1266,7 @@
 		}
 
 		zio->io_stage = stage;
-		rv = zio_pipeline[highbit(stage) - 1](zio);
+		rv = zio_pipeline[highbit64(stage) - 1](zio);
 
 		if (rv == ZIO_PIPELINE_STOP)
 			return;
--- old/usr/src/uts/common/sys/bitmap.h	Tue Apr 22 05:37:48 2014
+++ new/usr/src/uts/common/sys/bitmap.h	Tue Apr 22 05:37:48 2014
@@ -24,6 +24,10 @@
  * Use is subject to license terms.
  */
 
+/*
+ * Copyright (c) 2014 by Delphix. All rights reserved.
+ */
+
 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
 /*	  All Rights Reserved  	*/
 
@@ -31,8 +35,6 @@
 #ifndef _SYS_BITMAP_H
 #define	_SYS_BITMAP_H
 
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
-
 #ifdef	__cplusplus
 extern "C" {
 #endif
@@ -152,6 +154,7 @@
  * Low order bit is 0, high order bit is 31.
  */
 extern int	highbit(ulong_t);
+extern int	highbit64(uint64_t);
 extern int	lowbit(ulong_t);
 extern int	bt_getlowbit(ulong_t *bitmap, size_t start, size_t stop);
 extern void	bt_copy(ulong_t *, ulong_t *, ulong_t);
--- old/usr/src/uts/i86pc/io/apix/apix.c	Tue Apr 22 05:37:48 2014
+++ new/usr/src/uts/i86pc/io/apix/apix.c	Tue Apr 22 05:37:48 2014
@@ -347,13 +347,6 @@
 	return ((uintptr_t)(apix_vector->v_autovect));
 }
 
-#if defined(__amd64)
-static unsigned char dummy_cpu_pri[MAXIPL + 1] = {
-	0, 0, 0, 0, 0, 0, 0, 0,
-	0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-#endif
-
 static void
 apix_init()
 {
@@ -370,15 +363,11 @@
 	psm_get_ioapicid = apic_get_ioapicid;
 
 	apix_softinit();
-#if defined(__amd64)
-	/*
-	 * Make cpu-specific interrupt info point to cr8pri vector
-	 */
-	CPU->cpu_pri_data = dummy_cpu_pri;
-#else
+
+#if !defined(__amd64)
 	if (cpuid_have_cr8access(CPU))
 		apic_have_32bit_cr8 = 1;
-#endif	/* __amd64 */
+#endif
 
 	/*
 	 * Initialize IRM pool parameters
--- old/usr/src/uts/i86pc/io/pcplusmp/apic.c	Tue Apr 22 05:37:48 2014
+++ new/usr/src/uts/i86pc/io/pcplusmp/apic.c	Tue Apr 22 05:37:48 2014
@@ -143,10 +143,6 @@
 uchar_t	apic_ipltopri[MAXIPL + 1];	/* unix ipl to apic pri	*/
 	/* The taskpri to be programmed into apic to mask given ipl */
 
-#if defined(__amd64)
-uchar_t	apic_cr8pri[MAXIPL + 1];	/* unix ipl to cr8 pri	*/
-#endif
-
 /*
  * Correlation of the hardware vector to the IPL in use, initialized
  * from apic_vectortoipl[] in apic_init().  The final IPLs may not correlate
@@ -300,17 +296,11 @@
 		/* fill up any empty ipltopri slots */
 		apic_ipltopri[j] = (i << APIC_IPL_SHIFT) + APIC_BASE_VECT;
 	apic_init_common();
-#if defined(__amd64)
-	/*
-	 * Make cpu-specific interrupt info point to cr8pri vector
-	 */
-	for (i = 0; i <= MAXIPL; i++)
-		apic_cr8pri[i] = apic_ipltopri[i] >> APIC_IPL_SHIFT;
-	CPU->cpu_pri_data = apic_cr8pri;
-#else
+
+#if !defined(__amd64)
 	if (cpuid_have_cr8access(CPU))
 		apic_have_32bit_cr8 = 1;
-#endif	/* __amd64 */
+#endif
 }
 
 static void
@@ -581,24 +571,10 @@
 		nipl = apic_ipls[vector];
 
 		*vectorp = apic_vector_to_irq[vector + APIC_BASE_VECT];
-		if (apic_mode == LOCAL_APIC) {
-#if defined(__amd64)
-			setcr8((ulong_t)(apic_ipltopri[nipl] >>
-			    APIC_IPL_SHIFT));
-#else
-			if (apic_have_32bit_cr8)
-				setcr8((ulong_t)(apic_ipltopri[nipl] >>
-				    APIC_IPL_SHIFT));
-			else
-				LOCAL_APIC_WRITE_REG(APIC_TASK_REG,
-				    (uint32_t)apic_ipltopri[nipl]);
-#endif
-			LOCAL_APIC_WRITE_REG(APIC_EOI_REG, 0);
-		} else {
-			X2APIC_WRITE(APIC_TASK_REG, apic_ipltopri[nipl]);
-			X2APIC_WRITE(APIC_EOI_REG, 0);
-		}
 
+		apic_reg_ops->apic_write_task_reg(apic_ipltopri[nipl]);
+		apic_reg_ops->apic_send_eoi(0);
+
 		return (nipl);
 	}
 
@@ -628,20 +604,7 @@
 	nipl = apic_ipls[vector];
 	*vectorp = irq = apic_vector_to_irq[vector + APIC_BASE_VECT];
 
-	if (apic_mode == LOCAL_APIC) {
-#if defined(__amd64)
-		setcr8((ulong_t)(apic_ipltopri[nipl] >> APIC_IPL_SHIFT));
-#else
-		if (apic_have_32bit_cr8)
-			setcr8((ulong_t)(apic_ipltopri[nipl] >>
-			    APIC_IPL_SHIFT));
-		else
-			LOCAL_APIC_WRITE_REG(APIC_TASK_REG,
-			    (uint32_t)apic_ipltopri[nipl]);
-#endif
-	} else {
-		X2APIC_WRITE(APIC_TASK_REG, apic_ipltopri[nipl]);
-	}
+	apic_reg_ops->apic_write_task_reg(apic_ipltopri[nipl]);
 
 	cpu_infop->aci_current[nipl] = (uchar_t)irq;
 	cpu_infop->aci_curipl = (uchar_t)nipl;
@@ -653,11 +616,7 @@
 	 * cache usage. So, we leave it as is.
 	 */
 	if (!apic_level_intr[irq]) {
-		if (apic_mode == LOCAL_APIC) {
-			LOCAL_APIC_WRITE_REG(APIC_EOI_REG, 0);
-		} else {
-			X2APIC_WRITE(APIC_EOI_REG, 0);
-		}
+		apic_reg_ops->apic_send_eoi(0);
 	}
 
 #ifdef	DEBUG
@@ -697,14 +656,7 @@
 {
 	apic_cpus_info_t *cpu_infop;
 
-#if defined(__amd64)
-	setcr8((ulong_t)apic_cr8pri[prev_ipl]);
-#else
-	if (apic_have_32bit_cr8)
-		setcr8((ulong_t)(apic_ipltopri[prev_ipl] >> APIC_IPL_SHIFT));
-	else
-		apicadr[APIC_TASK_REG] = apic_ipltopri[prev_ipl];
-#endif
+	apic_reg_ops->apic_write_task_reg(apic_ipltopri[prev_ipl]);
 
 	APIC_INTR_EXIT();
 }
@@ -739,14 +691,7 @@
 static void
 apic_setspl(int ipl)
 {
-#if defined(__amd64)
-	setcr8((ulong_t)apic_cr8pri[ipl]);
-#else
-	if (apic_have_32bit_cr8)
-		setcr8((ulong_t)(apic_ipltopri[ipl] >> APIC_IPL_SHIFT));
-	else
-		apicadr[APIC_TASK_REG] = apic_ipltopri[ipl];
-#endif
+	apic_reg_ops->apic_write_task_reg(apic_ipltopri[ipl]);
 
 	/* interrupts at ipl above this cannot be in progress */
 	apic_cpus[psm_get_cpu_id()].aci_ISR_in_progress &= (2 << ipl) - 1;
--- old/usr/src/uts/i86pc/ml/offsets.in	Tue Apr 22 05:37:48 2014
+++ new/usr/src/uts/i86pc/ml/offsets.in	Tue Apr 22 05:37:48 2014
@@ -223,14 +223,10 @@
 	cpu_m.mcpu_tss		CPU_TSS
 	cpu_m.mcpu_softinfo	CPU_SOFTINFO
 	cpu_m.mcpu_pri		CPU_PRI
-	cpu_m.mcpu_pri_data	CPU_PRI_DATA
 #if defined(__xpv)
 	cpu_m.mcpu_vcpu_info	CPU_VCPU_INFO
 #endif
 
-machcpu
-	mcpu_pri_data	MCPU_PRI_DATA
-
 standard_pic
 	c_curmask
 	c_iplmask
--- old/usr/src/uts/i86pc/os/mlsetup.c	Tue Apr 22 05:37:48 2014
+++ new/usr/src/uts/i86pc/os/mlsetup.c	Tue Apr 22 05:37:48 2014
@@ -77,14 +77,6 @@
 extern uint32_t cpuid_feature_edx_exclude;
 
 /*
- * Dummy spl priority masks
- */
-static unsigned char dummy_cpu_pri[MAXIPL + 1] = {
-	0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf,
-	0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf
-};
-
-/*
  * Set console mode
  */
 static void
@@ -129,13 +121,6 @@
 #endif
 
 	/*
-	 * Set up dummy cpu_pri_data values till psm spl code is
-	 * installed.  This allows splx() to work on amd64.
-	 */
-
-	cpu[0]->cpu_pri_data = dummy_cpu_pri;
-
-	/*
 	 * check if we've got special bits to clear or set
 	 * when checking cpu features
 	 */
--- old/usr/src/uts/i86pc/os/mp_startup.c	Tue Apr 22 05:37:48 2014
+++ new/usr/src/uts/i86pc/os/mp_startup.c	Tue Apr 22 05:37:48 2014
@@ -412,11 +412,6 @@
 	}
 
 	/*
-	 * Get interrupt priority data from cpu 0.
-	 */
-	cp->cpu_pri_data = CPU->cpu_pri_data;
-
-	/*
 	 * alloc space for cpuid info
 	 */
 	cpuid_alloc_space(cp);
--- old/usr/src/uts/i86pc/os/timestamp.c	Tue Apr 22 05:37:48 2014
+++ new/usr/src/uts/i86pc/os/timestamp.c	Tue Apr 22 05:37:48 2014
@@ -236,6 +236,19 @@
 	return (hrt);
 }
 
+hrtime_t
+tsc_gethrtime_tick_delta(void)
+{
+	hrtime_t hrt;
+	ulong_t flags;
+
+	flags = clear_int_flag();
+	hrt = tsc_sync_tick_delta[CPU->cpu_id];
+	restore_int_flag(flags);
+
+	return (hrt);
+}
+
 /*
  * This is similar to the above, but it cannot actually spin on hres_lock.
  * As a result, it caches all of the variables it needs; if the variables
--- old/usr/src/uts/i86pc/sys/machcpuvar.h	Tue Apr 22 05:37:49 2014
+++ new/usr/src/uts/i86pc/sys/machcpuvar.h	Tue Apr 22 05:37:49 2014
@@ -62,7 +62,6 @@
  * Note:  This is kinda kludgy but seems to be the best
  * of our alternatives.
  */
-typedef void *cpu_pri_lev_t;
 
 struct cpuid_info;
 struct cpu_ucode_info;
@@ -91,9 +90,6 @@
 
 	int		mcpu_nodeid;		/* node-id */
 	int		mcpu_pri;		/* CPU priority */
-	cpu_pri_lev_t	mcpu_pri_data;		/* ptr to machine dependent */
-						/* data for setting priority */
-						/* level */
 
 	struct hat	*mcpu_current_hat; /* cpu's current hat */
 
@@ -165,7 +161,6 @@
 
 #define	cpu_nodeid cpu_m.mcpu_nodeid
 #define	cpu_pri cpu_m.mcpu_pri
-#define	cpu_pri_data cpu_m.mcpu_pri_data
 #define	cpu_current_hat cpu_m.mcpu_current_hat
 #define	cpu_hat_info cpu_m.mcpu_hat_info
 #define	cpu_ppaddr_mutex cpu_m.mcpu_ppaddr_mutex
--- old/usr/src/uts/i86pc/sys/machsystm.h	Tue Apr 22 05:37:49 2014
+++ new/usr/src/uts/i86pc/sys/machsystm.h	Tue Apr 22 05:37:49 2014
@@ -230,6 +230,7 @@
 extern page_t *page_get_high_mfn(mfn_t);
 #endif
 
+extern hrtime_t tsc_gethrtime_tick_delta(void);
 
 #endif /* _KERNEL */
 
--- old/usr/src/uts/intel/ia32/ml/i86_subr.s	Tue Apr 22 05:37:49 2014
+++ new/usr/src/uts/intel/ia32/ml/i86_subr.s	Tue Apr 22 05:37:49 2014
@@ -22,6 +22,7 @@
 /*
  * Copyright (c) 1992, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
+ * Copyright (c) 2014 by Delphix. All rights reserved.
  */
 
 /*
@@ -2845,6 +2846,43 @@
 	SET_SIZE(highbit)
 
 #endif	/* __i386 */
+#endif	/* __lint */
+
+#if defined(__lint)
+
+/*ARGSUSED*/
+int
+highbit64(uint64_t i)
+{ return (0); }
+
+#else	/* __lint */
+
+#if defined(__amd64)
+
+	ENTRY(highbit64)
+	movl	$-1, %eax
+	bsrq	%rdi, %rax
+	incl	%eax
+	ret
+	SET_SIZE(highbit64)
+
+#elif defined(__i386)
+
+	ENTRY(highbit64)
+	bsrl	8(%esp), %eax
+	jz	.lowbit
+	addl	$32, %eax
+	jmp	.done
+
+.lowbit:
+	movl	$-1, %eax
+	bsrl	4(%esp), %eax
+.done:
+	incl	%eax
+	ret
+	SET_SIZE(highbit64)
+
+#endif	/* __i386 */
 #endif	/* __lint */
 
 #if defined(__lint)
--- old/usr/src/uts/sparc/os/bitmap_arch.c	Tue Apr 22 05:37:49 2014
+++ new/usr/src/uts/sparc/os/bitmap_arch.c	Tue Apr 22 05:37:49 2014
@@ -23,9 +23,12 @@
  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
 
 /*
+ * Copyright (c) 2014 by Delphix. All rights reserved.
+ */
+
+/*
  * Architecture specific definition for bitmap related routines.
  * These may be implemented using ISA specific instructions.
  */
@@ -32,6 +35,38 @@
 #include <sys/bitmap.h>
 
 /*
+ * Find highest one bit set.
+ *	Returns bit number + 1 of highest bit that is set, otherwise returns 0.
+ */
+int
+highbit64(uint64_t i)
+{
+	int h = 1;
+
+	if (i == 0)
+		return (0);
+	if (i & 0xffffffff00000000ULL) {
+		h += 32; i >>= 32;
+	}
+	if (i & 0xffff0000) {
+		h += 16; i >>= 16;
+	}
+	if (i & 0xff00) {
+		h += 8; i >>= 8;
+	}
+	if (i & 0xf0) {
+		h += 4; i >>= 4;
+	}
+	if (i & 0xc) {
+		h += 2; i >>= 2;
+	}
+	if (i & 0x2) {
+		h += 1;
+	}
+	return (h);
+}
+
+/*
  * Find highest one bit set.
  *	Returns bit number + 1 of highest bit that is set, otherwise returns 0.
  * High order bit is 31 (or 63 in _LP64 kernel).
