Print this page
4210 unsigned unsigned short short is valid in dtrace
Reviewed by: Dan Kimmel <dan.kimmel@delphix.com>
Reviewed by: Eric Diven <eric.diven@delphix.com>
Reviewed by: Adam Leventhal <ahl@delphix.com>
@@ -19,11 +19,11 @@
* CDDL HEADER END
*/
/*
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
*/
#include <strings.h>
#include <stdlib.h>
#include <limits.h>
@@ -264,10 +264,30 @@
ddp = dt_decl_push(dt_decl_alloc(CTF_K_UNKNOWN, NULL));
ddp->dd_attr = attr;
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;
}