Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 6 Feb 2013 08:17:30 +0000 (UTC)
From:      Martin Matuska <mm@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r246391 - vendor-sys/illumos/dist/uts/common/dtrace vendor/illumos/dist/cmd/dtrace/test/tst/common/pointers
Message-ID:  <201302060817.r168HUmW039433@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mm
Date: Wed Feb  6 08:17:29 2013
New Revision: 246391
URL: http://svnweb.freebsd.org/changeset/base/246391

Log:
  Update vendor/illumos/dist and vendor-sys/illumos/dist
  to illumos-gate 13939:20e4d8d8da6d
  
  illumos dtrace issues:
    3511 dtrace.c erroneously checks for memory alignment on amd64

Modified:
  vendor/illumos/dist/cmd/dtrace/test/tst/common/pointers/err.InvalidAddress5.d

Changes in other areas also in this revision:
Modified:
  vendor-sys/illumos/dist/uts/common/dtrace/dtrace.c

Modified: vendor/illumos/dist/cmd/dtrace/test/tst/common/pointers/err.InvalidAddress5.d
==============================================================================
--- vendor/illumos/dist/cmd/dtrace/test/tst/common/pointers/err.InvalidAddress5.d	Wed Feb  6 08:14:58 2013	(r246390)
+++ vendor/illumos/dist/cmd/dtrace/test/tst/common/pointers/err.InvalidAddress5.d	Wed Feb  6 08:17:29 2013	(r246391)
@@ -24,7 +24,9 @@
  * Use is subject to license terms.
  */
 
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
+/*
+ * Copyright (c) 2012 by Delphix. All rights reserved.
+ */
 
 /*
  * ASSERTION:
@@ -32,44 +34,51 @@
  * a runtime error.
  *
  * SECTION: Pointers and Arrays/Generic Pointers
- *
- * NOTES:
- * This test doesn't apply to x86; for the time being, we're working
- * around this with the preprocessor.
  */
 
 #pragma D option quiet
 
-int array[3];
-uintptr_t uptr;
+#if defined(__i386) || defined(__amd64)
+#define __x86 1
+#endif
+
+int array[2];
+char *ptr;
 int *p;
 int *q;
 int *r;
 
 BEGIN
 {
-#ifdef __i386
+	array[0] = 0x12345678;
+	array[1] = 0xabcdefff;
+
+	ptr = (char *) &array[0];
+
+	p = (int *) (ptr);
+	q = (int *) (ptr + 2);
+	r = (int *) (ptr + 3);
+
+	printf("*p: 0x%x\n", *p);
+	printf("*q: 0x%x\n", *q);
+	printf("*r: 0x%x\n", *r);
+
+	/*
+	 * On x86, the above unaligned memory accesses are allowed and should
+	 * not result in the ERROR probe firing.
+	 */
+#ifdef __x86
 	exit(1);
 #else
-	array[0] = 20;
-	array[1] = 40;
-	array[2] = 80;
-
-	uptr = (uintptr_t) &array[0];
-
-	p = (int *) (uptr);
-	q = (int *) (uptr + 2);
-	r = (int *) (uptr + 3);
-
-	printf("array[0]: %d\t*p: %d\n", array[0], *p);
-	printf("array[1]: %d\t*q: %d\n", array[1], *q);
-	printf("array[2]: %d\t*r: %d\n", array[2], *r);
-
 	exit(0);
 #endif
 }
 
 ERROR
 {
+#ifdef __x86
+	exit(0);
+#else
 	exit(1);
+#endif
 }



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