svn commit: r248706 - in head: cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs cddl/contrib/opensolaris/lib/libdtrace/common sys/cddl/contrib/opensolaris/uts/common/dtrace sys/cddl/contri...

Pedro F. Giffuni pfg at FreeBSD.org
Mon Mar 25 15:41:00 UTC 2013


Author: pfg
Date: Mon Mar 25 15:40:57 2013
New Revision: 248706
URL: http://svnweb.freebsd.org/changeset/base/248706

Log:
  Dtrace: add toupper()/tolower() and enhancements to lltostr().
  
  Merge changes from illumos:
  
  1451 DTrace needs toupper()/tolower() subroutines
  1457 lltostr() D subroutine should take an optional base
  
  This change bumps the DT_VERS_* number to 1.8.1 in
  accordance to what is done in illumos.
  
  The test suite we currently include is outdated and
  doesnt support some updates in tst.subr.d which had to
  be left out for now.
  
  Illumos Revisions:	r13458 5e394d8db762
  			r13459 c3454574dd1a
  
  Reference:
  https://www.illumos.org/issues/1451
  https://www.illumos.org/issues/1457
  
  Tested by:	Fabian Keil
  Obtained from:	Illumos
  MFC after:	1 month

Added:
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d
     - copied unchanged from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d
     - copied unchanged from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d
     - copied unchanged from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d
     - copied unchanged from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d
     - copied unchanged from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d
     - copied unchanged from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d
     - copied unchanged from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out
     - copied unchanged from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.tolower.d
     - copied unchanged from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/tst.tolower.d
  head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.toupper.d
     - copied unchanged from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/tst.toupper.d
Modified:
  head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c
  head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
  head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h

Copied: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d (from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d	Mon Mar 25 15:40:57 2013	(r248706, copy of r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.tolower.d)
@@ -0,0 +1,30 @@
+/*
+ * 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) 2011, Joyent, Inc. All rights reserved.
+ */
+
+BEGIN
+{
+	trace(tolower(2152006));
+	exit(1);
+}

Copied: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d (from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d	Mon Mar 25 15:40:57 2013	(r248706, copy of r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_ARG.toupper.d)
@@ -0,0 +1,30 @@
+/*
+ * 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) 2011, Joyent, Inc. All rights reserved.
+ */
+
+BEGIN
+{
+	trace(toupper(timestamp));
+	exit(1);
+}

Copied: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d (from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d	Mon Mar 25 15:40:57 2013	(r248706, copy of r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolower.d)
@@ -0,0 +1,30 @@
+/*
+ * 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) 2011, Joyent, Inc. All rights reserved.
+ */
+
+BEGIN
+{
+	trace(tolower());
+	exit(1);
+}

Copied: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d (from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d	Mon Mar 25 15:40:57 2013	(r248706, copy of r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.tolowertoomany.d)
@@ -0,0 +1,30 @@
+/*
+ * 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) 2011, Joyent, Inc. All rights reserved.
+ */
+
+BEGIN
+{
+	trace(tolower("dory", "eel", "roughy"));
+	exit(1);
+}

Copied: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d (from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d	Mon Mar 25 15:40:57 2013	(r248706, copy of r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.toupper.d)
@@ -0,0 +1,30 @@
+/*
+ * 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) 2011, Joyent, Inc. All rights reserved.
+ */
+
+BEGIN
+{
+	trace(toupper());
+	exit(1);
+}

Copied: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d (from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d	Mon Mar 25 15:40:57 2013	(r248706, copy of r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/err.D_PROTO_LEN.touppertoomany.d)
@@ -0,0 +1,30 @@
+/*
+ * 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) 2011, Joyent, Inc. All rights reserved.
+ */
+
+BEGIN
+{
+	trace(tolower("haino", "tylo"));
+	exit(1);
+}

Copied: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d (from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d	Mon Mar 25 15:40:57 2013	(r248706, copy of r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d)
@@ -0,0 +1,80 @@
+/*
+ * 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) 2011, Joyent, Inc. All rights reserved.
+ */
+
+#pragma D option quiet
+
+int64_t val[int];
+
+BEGIN
+{
+	base = -2;
+	i = 0;
+	val[i++] = -10;
+	val[i++] = -1;
+	val[i++] = 0;
+	val[i++] = 10;
+	val[i++] = 100;
+	val[i++] = 1000;
+	val[i++] = (1LL << 62);
+	maxval = i;
+	i = 0;
+}
+
+tick-1ms
+/i < maxval/
+{
+	printf("base %2d of %20d:  ", base, val[i]);
+}
+
+tick-1ms
+/i < maxval/
+{
+	printf("  %s\n", lltostr(val[i], base));
+}
+
+ERROR
+{
+	printf("  <error>\n");
+}
+
+tick-1ms
+/i < maxval/
+{
+	i++;
+}
+
+tick-1ms
+/i == maxval/
+{
+	i = 0;
+	base++;
+}
+
+tick-1ms
+/base > 40/
+{
+	exit(0);
+}
+

Copied: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out (from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out	Mon Mar 25 15:40:57 2013	(r248706, copy of r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/tst.lltostrbase.d.out)
@@ -0,0 +1,302 @@
+base -2 of                  -10:    <error>
+base -2 of                   -1:    <error>
+base -2 of                    0:    <error>
+base -2 of                   10:    <error>
+base -2 of                  100:    <error>
+base -2 of                 1000:    <error>
+base -2 of  4611686018427387904:    <error>
+base -1 of                  -10:    <error>
+base -1 of                   -1:    <error>
+base -1 of                    0:    <error>
+base -1 of                   10:    <error>
+base -1 of                  100:    <error>
+base -1 of                 1000:    <error>
+base -1 of  4611686018427387904:    <error>
+base  0 of                  -10:    <error>
+base  0 of                   -1:    <error>
+base  0 of                    0:    <error>
+base  0 of                   10:    <error>
+base  0 of                  100:    <error>
+base  0 of                 1000:    <error>
+base  0 of  4611686018427387904:    <error>
+base  1 of                  -10:    <error>
+base  1 of                   -1:    <error>
+base  1 of                    0:    <error>
+base  1 of                   10:    <error>
+base  1 of                  100:    <error>
+base  1 of                 1000:    <error>
+base  1 of  4611686018427387904:    <error>
+base  2 of                  -10:    1111111111111111111111111111111111111111111111111111111111110110
+base  2 of                   -1:    1111111111111111111111111111111111111111111111111111111111111111
+base  2 of                    0:    0
+base  2 of                   10:    1010
+base  2 of                  100:    1100100
+base  2 of                 1000:    1111101000
+base  2 of  4611686018427387904:    100000000000000000000000000000000000000000000000000000000000000
+base  3 of                  -10:    11112220022122120101211020120210210211120
+base  3 of                   -1:    11112220022122120101211020120210210211220
+base  3 of                    0:    0
+base  3 of                   10:    101
+base  3 of                  100:    10201
+base  3 of                 1000:    1101001
+base  3 of  4611686018427387904:    1010201120122220002201001122110012110111
+base  4 of                  -10:    33333333333333333333333333333312
+base  4 of                   -1:    33333333333333333333333333333333
+base  4 of                    0:    0
+base  4 of                   10:    22
+base  4 of                  100:    1210
+base  4 of                 1000:    33220
+base  4 of  4611686018427387904:    10000000000000000000000000000000
+base  5 of                  -10:    2214220303114400424121122411
+base  5 of                   -1:    2214220303114400424121122430
+base  5 of                    0:    0
+base  5 of                   10:    20
+base  5 of                  100:    400
+base  5 of                 1000:    13000
+base  5 of  4611686018427387904:    302141200402211214402403104
+base  6 of                  -10:    3520522010102100444244410
+base  6 of                   -1:    3520522010102100444244423
+base  6 of                    0:    0
+base  6 of                   10:    14
+base  6 of                  100:    244
+base  6 of                 1000:    4344
+base  6 of  4611686018427387904:    550120301313313111041104
+base  7 of                  -10:    45012021522523134134556
+base  7 of                   -1:    45012021522523134134601
+base  7 of                    0:    0
+base  7 of                   10:    13
+base  7 of                  100:    202
+base  7 of                 1000:    2626
+base  7 of  4611686018427387904:    11154003640456024361134
+base  8 of                  -10:    01777777777777777777766
+base  8 of                   -1:    01777777777777777777777
+base  8 of                    0:    0
+base  8 of                   10:    012
+base  8 of                  100:    0144
+base  8 of                 1000:    01750
+base  8 of  4611686018427387904:    0400000000000000000000
+base  9 of                  -10:    145808576354216723746
+base  9 of                   -1:    145808576354216723756
+base  9 of                    0:    0
+base  9 of                   10:    11
+base  9 of                  100:    121
+base  9 of                 1000:    1331
+base  9 of  4611686018427387904:    33646586081048405414
+base 10 of                  -10:    -10
+base 10 of                   -1:    -1
+base 10 of                    0:    0
+base 10 of                   10:    10
+base 10 of                  100:    100
+base 10 of                 1000:    1000
+base 10 of  4611686018427387904:    4611686018427387904
+base 11 of                  -10:    335500516a429071276
+base 11 of                   -1:    335500516a429071284
+base 11 of                    0:    0
+base 11 of                   10:    a
+base 11 of                  100:    91
+base 11 of                 1000:    82a
+base 11 of  4611686018427387904:    9140013181078458a4
+base 12 of                  -10:    839365134a2a240706
+base 12 of                   -1:    839365134a2a240713
+base 12 of                    0:    0
+base 12 of                   10:    a
+base 12 of                  100:    84
+base 12 of                 1000:    6b4
+base 12 of  4611686018427387904:    20b3a733a268670194
+base 13 of                  -10:    219505a9511a867b66
+base 13 of                   -1:    219505a9511a867b72
+base 13 of                    0:    0
+base 13 of                   10:    a
+base 13 of                  100:    79
+base 13 of                 1000:    5bc
+base 13 of  4611686018427387904:    6c1349246a2881c84
+base 14 of                  -10:    8681049adb03db166
+base 14 of                   -1:    8681049adb03db171
+base 14 of                    0:    0
+base 14 of                   10:    a
+base 14 of                  100:    72
+base 14 of                 1000:    516
+base 14 of  4611686018427387904:    219038263637dd3c4
+base 15 of                  -10:    2c1d56b648c6cd106
+base 15 of                   -1:    2c1d56b648c6cd110
+base 15 of                    0:    0
+base 15 of                   10:    a
+base 15 of                  100:    6a
+base 15 of                 1000:    46a
+base 15 of  4611686018427387904:    a7e8ce189a933404
+base 16 of                  -10:    0xfffffffffffffff6
+base 16 of                   -1:    0xffffffffffffffff
+base 16 of                    0:    0x0
+base 16 of                   10:    0xa
+base 16 of                  100:    0x64
+base 16 of                 1000:    0x3e8
+base 16 of  4611686018427387904:    0x4000000000000000
+base 17 of                  -10:    67979g60f5428008
+base 17 of                   -1:    67979g60f5428010
+base 17 of                    0:    0
+base 17 of                   10:    a
+base 17 of                  100:    5f
+base 17 of                 1000:    37e
+base 17 of  4611686018427387904:    1a6a6ca03e10a88d
+base 18 of                  -10:    2d3fgb0b9cg4bd26
+base 18 of                   -1:    2d3fgb0b9cg4bd2f
+base 18 of                    0:    0
+base 18 of                   10:    a
+base 18 of                  100:    5a
+base 18 of                 1000:    31a
+base 18 of  4611686018427387904:    c588bdbfgd12ge4
+base 19 of                  -10:    141c8786h1ccaag7
+base 19 of                   -1:    141c8786h1ccaagg
+base 19 of                    0:    0
+base 19 of                   10:    a
+base 19 of                  100:    55
+base 19 of                 1000:    2ec
+base 19 of  4611686018427387904:    5ecbb6fi9h7ggi9
+base 20 of                  -10:    b53bjh07be4dj06
+base 20 of                   -1:    b53bjh07be4dj0f
+base 20 of                    0:    0
+base 20 of                   10:    a
+base 20 of                  100:    50
+base 20 of                 1000:    2a0
+base 20 of  4611686018427387904:    2g5hjj51hib39f4
+base 21 of                  -10:    5e8g4ggg7g56di6
+base 21 of                   -1:    5e8g4ggg7g56dif
+base 21 of                    0:    0
+base 21 of                   10:    a
+base 21 of                  100:    4g
+base 21 of                 1000:    25d
+base 21 of  4611686018427387904:    18hjgjjjhebh8f4
+base 22 of                  -10:    2l4lf104353j8k6
+base 22 of                   -1:    2l4lf104353j8kf
+base 22 of                    0:    0
+base 22 of                   10:    a
+base 22 of                  100:    4c
+base 22 of                 1000:    21a
+base 22 of  4611686018427387904:    g6g95gc0hha7g4
+base 23 of                  -10:    1ddh88h2782i50j
+base 23 of                   -1:    1ddh88h2782i515
+base 23 of                    0:    0
+base 23 of                   10:    a
+base 23 of                  100:    48
+base 23 of                 1000:    1kb
+base 23 of  4611686018427387904:    93a22467dc4chd
+base 24 of                  -10:    l12ee5fn0ji1i6
+base 24 of                   -1:    l12ee5fn0ji1if
+base 24 of                    0:    0
+base 24 of                   10:    a
+base 24 of                  100:    44
+base 24 of                 1000:    1hg
+base 24 of  4611686018427387904:    566ffd9ni4mcag
+base 25 of                  -10:    c9c336o0mlb7e6
+base 25 of                   -1:    c9c336o0mlb7ef
+base 25 of                    0:    0
+base 25 of                   10:    a
+base 25 of                  100:    40
+base 25 of                 1000:    1f0
+base 25 of  4611686018427387904:    32970kc6bo2kg4
+base 26 of                  -10:    7b7n2pcniokcg6
+base 26 of                   -1:    7b7n2pcniokcgf
+base 26 of                    0:    0
+base 26 of                   10:    a
+base 26 of                  100:    3m
+base 26 of                 1000:    1cc
+base 26 of  4611686018427387904:    1m8c769io65344
+base 27 of                  -10:    4eo8hfam6fllmf
+base 27 of                   -1:    4eo8hfam6fllmo
+base 27 of                    0:    0
+base 27 of                   10:    a
+base 27 of                  100:    3j
+base 27 of                 1000:    1a1
+base 27 of  4611686018427387904:    13jfho2j1hc5cd
+base 28 of                  -10:    2nc6j26l66rho6
+base 28 of                   -1:    2nc6j26l66rhof
+base 28 of                    0:    0
+base 28 of                   10:    a
+base 28 of                  100:    3g
+base 28 of                 1000:    17k
+base 28 of  4611686018427387904:    jo1ilfj8fkpd4
+base 29 of                  -10:    1n3rsh11f098re
+base 29 of                   -1:    1n3rsh11f098rn
+base 29 of                    0:    0
+base 29 of                   10:    a
+base 29 of                  100:    3d
+base 29 of                 1000:    15e
+base 29 of  4611686018427387904:    d0slim0b029e6
+base 30 of                  -10:    14l9lkmo30o406
+base 30 of                   -1:    14l9lkmo30o40f
+base 30 of                    0:    0
+base 30 of                   10:    a
+base 30 of                  100:    3a
+base 30 of                 1000:    13a
+base 30 of  4611686018427387904:    8k9rrkl0ml104
+base 31 of                  -10:    nd075ib45k866
+base 31 of                   -1:    nd075ib45k86f
+base 31 of                    0:    0
+base 31 of                   10:    a
+base 31 of                  100:    37
+base 31 of                 1000:    118
+base 31 of  4611686018427387904:    5qfh94i8okhh4
+base 32 of                  -10:    fvvvvvvvvvvvm
+base 32 of                   -1:    fvvvvvvvvvvvv
+base 32 of                    0:    0
+base 32 of                   10:    a
+base 32 of                  100:    34
+base 32 of                 1000:    v8
+base 32 of  4611686018427387904:    4000000000000
+base 33 of                  -10:    b1w8p7j5q9r66
+base 33 of                   -1:    b1w8p7j5q9r6f
+base 33 of                    0:    0
+base 33 of                   10:    a
+base 33 of                  100:    31
+base 33 of                 1000:    ua
+base 33 of  4611686018427387904:    2p826a4q6ivi4
+base 34 of                  -10:    7orp63sh4dph8
+base 34 of                   -1:    7orp63sh4dphh
+base 34 of                    0:    0
+base 34 of                   10:    a
+base 34 of                  100:    2w
+base 34 of                 1000:    te
+base 34 of  4611686018427387904:    1vnvr0wl9ketu
+base 35 of                  -10:    5g24a25twkwf6
+base 35 of                   -1:    5g24a25twkwff
+base 35 of                    0:    0
+base 35 of                   10:    a
+base 35 of                  100:    2u
+base 35 of                 1000:    sk
+base 35 of  4611686018427387904:    1cqrb9a7gvgu4
+base 36 of                  -10:    3w5e11264sgs6
+base 36 of                   -1:    3w5e11264sgsf
+base 36 of                    0:    0
+base 36 of                   10:    a
+base 36 of                  100:    2s
+base 36 of                 1000:    rs
+base 36 of  4611686018427387904:    z1ci99jj7474
+base 37 of                  -10:    <error>
+base 37 of                   -1:    <error>
+base 37 of                    0:    <error>
+base 37 of                   10:    <error>
+base 37 of                  100:    <error>
+base 37 of                 1000:    <error>
+base 37 of  4611686018427387904:    <error>
+base 38 of                  -10:    <error>
+base 38 of                   -1:    <error>
+base 38 of                    0:    <error>
+base 38 of                   10:    <error>
+base 38 of                  100:    <error>
+base 38 of                 1000:    <error>
+base 38 of  4611686018427387904:    <error>
+base 39 of                  -10:    <error>
+base 39 of                   -1:    <error>
+base 39 of                    0:    <error>
+base 39 of                   10:    <error>
+base 39 of                  100:    <error>
+base 39 of                 1000:    <error>
+base 39 of  4611686018427387904:    <error>
+base 40 of                  -10:    <error>
+base 40 of                   -1:    <error>
+base 40 of                    0:    <error>
+base 40 of                   10:    <error>
+base 40 of                  100:    <error>
+base 40 of                 1000:    <error>
+base 40 of  4611686018427387904:    <error>
+

Copied: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.tolower.d (from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/tst.tolower.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.tolower.d	Mon Mar 25 15:40:57 2013	(r248706, copy of r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/tst.tolower.d)
@@ -0,0 +1,66 @@
+/*
+ * 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) 2011, Joyent, Inc. All rights reserved.
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+	i = 0;
+
+	input[i] = "ahi";
+	expected[i++] = "ahi";
+
+	input[i] = "MaHi!";
+	expected[i++] = "mahi!";
+
+	input[i] = "   Nase-5";
+	expected[i++] = "   nase-5";
+
+	input[i] = "!@#$%";
+	expected[i++] = "!@#$%";
+
+	i = 0;
+}
+
+tick-1ms
+/input[i] != NULL && (this->out = tolower(input[i])) != expected[i]/
+{
+	printf("expected tolower(\"%s\") to be \"%s\"; found \"%s\"\n",
+	    input[i], expected[i], this->out);
+	exit(1);
+}
+
+tick-1ms
+/input[i] != NULL/
+{
+	printf("tolower(\"%s\") is \"%s\", as expected\n",
+	    input[i], expected[i]);
+}
+
+tick-1ms
+/input[i++] == NULL/
+{
+	exit(0);
+}

Copied: head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.toupper.d (from r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/tst.toupper.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/funcs/tst.toupper.d	Mon Mar 25 15:40:57 2013	(r248706, copy of r248705, vendor/illumos/dist/cmd/dtrace/test/tst/common/funcs/tst.toupper.d)
@@ -0,0 +1,66 @@
+/*
+ * 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) 2011, Joyent, Inc. All rights reserved.
+ */
+
+#pragma D option quiet
+
+BEGIN
+{
+	i = 0;
+
+	input[i] = "ahi";
+	expected[i++] = "AHI";
+
+	input[i] = "MaHi!";
+	expected[i++] = "MAHI!";
+
+	input[i] = "   dace-9";
+	expected[i++] = "   DACE-9";
+
+	input[i] = "!@#$%";
+	expected[i++] = "!@#$%";
+
+	i = 0;
+}
+
+tick-1ms
+/input[i] != NULL && (this->out = toupper(input[i])) != expected[i]/
+{
+	printf("expected toupper(\"%s\") to be \"%s\"; found \"%s\"\n",
+	    input[i], expected[i], this->out);
+	exit(1);
+}
+
+tick-1ms
+/input[i] != NULL/
+{
+	printf("toupper(\"%s\") is \"%s\", as expected\n",
+	    input[i], expected[i]);
+}
+
+tick-1ms
+/input[i++] == NULL/
+{
+	exit(0);
+}

Modified: head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c
==============================================================================
--- head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c	Mon Mar 25 14:30:34 2013	(r248705)
+++ head/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c	Mon Mar 25 15:40:57 2013	(r248706)
@@ -117,8 +117,10 @@
 #define	DT_VERS_1_6_3	DT_VERSION_NUMBER(1, 6, 3)
 #define	DT_VERS_1_7	DT_VERSION_NUMBER(1, 7, 0)
 #define	DT_VERS_1_7_1	DT_VERSION_NUMBER(1, 7, 1)
-#define	DT_VERS_LATEST	DT_VERS_1_7_1
-#define	DT_VERS_STRING	"Sun D 1.7.1"
+#define	DT_VERS_1_8	DT_VERSION_NUMBER(1, 8, 0)
+#define	DT_VERS_1_8_1	DT_VERSION_NUMBER(1, 8, 1)
+#define	DT_VERS_LATEST	DT_VERS_1_8_1
+#define	DT_VERS_STRING	"Sun D 1.8.1"
 
 const dt_version_t _dtrace_versions[] = {
 	DT_VERS_1_0,	/* D API 1.0.0 (PSARC 2001/466) Solaris 10 FCS */
@@ -136,6 +138,8 @@ const dt_version_t _dtrace_versions[] = 
 	DT_VERS_1_6_3,	/* D API 1.6.3 */
 	DT_VERS_1_7,	/* D API 1.7 */
 	DT_VERS_1_7_1,	/* D API 1.7.1 */
+	DT_VERS_1_8,	/* D API 1.8 */
+	DT_VERS_1_8_1,	/* D API 1.8.1 */
 	0
 };
 
@@ -291,7 +295,7 @@ static const dt_ident_t _dtrace_globals[
 { "jstack", DT_IDENT_ACTFUNC, 0, DT_ACT_JSTACK, DT_ATTR_STABCMN, DT_VERS_1_0,
 	&dt_idops_func, "stack(...)" },
 { "lltostr", DT_IDENT_FUNC, 0, DIF_SUBR_LLTOSTR, DT_ATTR_STABCMN, DT_VERS_1_0,
-	&dt_idops_func, "string(int64_t)" },
+	&dt_idops_func, "string(int64_t, [int])" },
 { "llquantize", DT_IDENT_AGGFUNC, 0, DTRACEAGG_LLQUANTIZE, DT_ATTR_STABCMN,
 	DT_VERS_1_7, &dt_idops_func,
 	"void(@, int32_t, int32_t, int32_t, int32_t, ...)" },
@@ -459,6 +463,10 @@ static const dt_ident_t _dtrace_globals[
 { "timestamp", DT_IDENT_SCALAR, 0, DIF_VAR_TIMESTAMP,
 	DT_ATTR_STABCMN, DT_VERS_1_0,
 	&dt_idops_type, "uint64_t" },
+{ "tolower", DT_IDENT_FUNC, 0, DIF_SUBR_TOLOWER, DT_ATTR_STABCMN, DT_VERS_1_8,
+	&dt_idops_func, "string(const char *)" },
+{ "toupper", DT_IDENT_FUNC, 0, DIF_SUBR_TOUPPER, DT_ATTR_STABCMN, DT_VERS_1_8,
+	&dt_idops_func, "string(const char *)" },
 { "trace", DT_IDENT_ACTFUNC, 0, DT_ACT_TRACE, DT_ATTR_STABCMN, DT_VERS_1_0,
 	&dt_idops_func, "void(@)" },
 { "tracemem", DT_IDENT_ACTFUNC, 0, DT_ACT_TRACEMEM,

Modified: head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c	Mon Mar 25 14:30:34 2013	(r248705)
+++ head/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c	Mon Mar 25 15:40:57 2013	(r248706)
@@ -4019,6 +4019,53 @@ dtrace_dif_subr(uint_t subr, uint_t rd, 
 		break;
 	}
 
+	case DIF_SUBR_TOUPPER:
+	case DIF_SUBR_TOLOWER: {
+		uintptr_t s = tupregs[0].dttk_value;
+		uint64_t size = state->dts_options[DTRACEOPT_STRSIZE];
+		char *dest = (char *)mstate->dtms_scratch_ptr, c;
+		size_t len = dtrace_strlen((char *)s, size);
+		char lower, upper, convert;
+		int64_t i;
+
+		if (subr == DIF_SUBR_TOUPPER) {
+			lower = 'a';
+			upper = 'z';
+			convert = 'A';
+		} else {
+			lower = 'A';
+			upper = 'Z';
+			convert = 'a';
+		}
+
+		if (!dtrace_canload(s, len + 1, mstate, vstate)) {
+			regs[rd] = 0;
+			break;
+		}
+
+		if (!DTRACE_INSCRATCH(mstate, size)) {
+			DTRACE_CPUFLAG_SET(CPU_DTRACE_NOSCRATCH);
+			regs[rd] = 0;
+			break;
+		}
+
+		for (i = 0; i < size - 1; i++) {
+			if ((c = dtrace_load8(s + i)) == '\0')
+				break;
+
+			if (c >= lower && c <= upper)
+				c = convert + (c - lower);
+
+			dest[i] = c;
+		}
+
+		ASSERT(i < size);
+		dest[i] = '\0';
+		regs[rd] = (uintptr_t)dest;
+		mstate->dtms_scratch_ptr += size;
+		break;
+	}
+
 #if defined(sun)
 	case DIF_SUBR_GETMAJOR:
 #ifdef _LP64
@@ -4283,9 +4330,20 @@ dtrace_dif_subr(uint_t subr, uint_t rd, 
 
 	case DIF_SUBR_LLTOSTR: {
 		int64_t i = (int64_t)tupregs[0].dttk_value;
-		int64_t val = i < 0 ? i * -1 : i;
-		uint64_t size = 22;	/* enough room for 2^64 in decimal */
+		uint64_t val, digit;
+		uint64_t size = 65;	/* enough room for 2^64 in binary */
 		char *end = (char *)mstate->dtms_scratch_ptr + size - 1;
+		int base = 10;
+
+		if (nargs > 1) {
+			if ((base = tupregs[1].dttk_value) <= 1 ||
+			    base > ('z' - 'a' + 1) + ('9' - '0' + 1)) {
+				*flags |= CPU_DTRACE_ILLOP;
+				break;
+			}
+		}
+
+		val = (base == 10 && i < 0) ? i * -1 : i;
 
 		if (!DTRACE_INSCRATCH(mstate, size)) {
 			DTRACE_CPUFLAG_SET(CPU_DTRACE_NOSCRATCH);
@@ -4293,13 +4351,24 @@ dtrace_dif_subr(uint_t subr, uint_t rd, 
 			break;
 		}
 
-		for (*end-- = '\0'; val; val /= 10)
-			*end-- = '0' + (val % 10);
+		for (*end-- = '\0'; val; val /= base) {
+			if ((digit = val % base) <= '9' - '0') {
+				*end-- = '0' + digit;
+			} else {
+				*end-- = 'a' + (digit - ('9' - '0') - 1);
+			}
+		}
+
+		if (i == 0 && base == 16)
+			*end-- = '0';
+
+		if (base == 16)
+			*end-- = 'x';
 
-		if (i == 0)
+		if (i == 0 || base == 8 || base == 16)
 			*end-- = '0';
 
-		if (i < 0)
+		if (i < 0 && base == 10)
 			*end-- = '-';
 
 		regs[rd] = (uintptr_t)end + 1;

Modified: head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h
==============================================================================
--- head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h	Mon Mar 25 14:30:34 2013	(r248705)
+++ head/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h	Mon Mar 25 15:40:57 2013	(r248706)
@@ -303,13 +303,15 @@ typedef enum dtrace_probespec {
 #define	DIF_SUBR_INET_NTOP		41
 #define	DIF_SUBR_INET_NTOA		42
 #define	DIF_SUBR_INET_NTOA6		43
-#define	DIF_SUBR_MEMREF			44
-#define	DIF_SUBR_TYPEREF		45
-#define	DIF_SUBR_SX_SHARED_HELD		46
-#define	DIF_SUBR_SX_EXCLUSIVE_HELD	47
-#define	DIF_SUBR_SX_ISEXCLUSIVE		48
+#define	DIF_SUBR_TOUPPER		44
+#define	DIF_SUBR_TOLOWER		45
+#define	DIF_SUBR_MEMREF			46
+#define	DIF_SUBR_TYPEREF		47
+#define	DIF_SUBR_SX_SHARED_HELD		48
+#define	DIF_SUBR_SX_EXCLUSIVE_HELD	49
+#define	DIF_SUBR_SX_ISEXCLUSIVE		50
 
-#define	DIF_SUBR_MAX			48	/* max subroutine value */
+#define	DIF_SUBR_MAX			50	/* max subroutine value */
 
 typedef uint32_t dif_instr_t;
 


More information about the svn-src-all mailing list