Dtrace: resolve const types from fbt and other fixes.
Merge change from illumos: 3519 DTrace fails to resolve const types from fbt 3520 dtrace internal error -- token type 316 is not a valid D compilation token 3521 clean up dtrace unit tests Illumos Revision: e98f46c Reference: https://www.illumos.org/issues/3519 https://www.illumos.org/issues/3520 https://www.illumos.org/issues/3521 Tested by: Fabian Keil Obtained from: Illumos MFC after: 1 month
This commit is contained in:
commit
d184218c18
@ -24,7 +24,9 @@
|
|||||||
* Use is subject to license terms.
|
* Use is subject to license terms.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma ident "%Z%%M% %I% %E% SMI"
|
/*
|
||||||
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
#pragma D option quiet
|
#pragma D option quiet
|
||||||
|
|
||||||
@ -36,3 +38,8 @@ BEGIN
|
|||||||
printf("%s\n", strjoin("", ""));
|
printf("%s\n", strjoin("", ""));
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
@ -24,7 +24,9 @@
|
|||||||
* Use is subject to license terms.
|
* Use is subject to license terms.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma ident "%Z%%M% %I% %E% SMI"
|
/*
|
||||||
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ASSERTION: This test reproduces the alignment error.
|
* ASSERTION: This test reproduces the alignment error.
|
||||||
@ -39,9 +41,10 @@
|
|||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
{
|
{
|
||||||
x = (int *) 64;
|
x = (int *)64;
|
||||||
y = *x;
|
y = *x;
|
||||||
trace(y);
|
trace(y);
|
||||||
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
ERROR
|
ERROR
|
||||||
|
@ -24,7 +24,9 @@
|
|||||||
* Use is subject to license terms.
|
* Use is subject to license terms.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma ident "%Z%%M% %I% %E% SMI"
|
/*
|
||||||
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ASSERTION: D pointers do not allow invalid pointer accesses.
|
* ASSERTION: D pointers do not allow invalid pointer accesses.
|
||||||
@ -44,6 +46,7 @@ BEGIN
|
|||||||
y = (int *) (x - 3300778156056);
|
y = (int *) (x - 3300778156056);
|
||||||
*y = 3;
|
*y = 3;
|
||||||
trace(*y);
|
trace(*y);
|
||||||
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
ERROR
|
ERROR
|
||||||
|
@ -24,7 +24,9 @@
|
|||||||
* Use is subject to license terms.
|
* Use is subject to license terms.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma ident "%Z%%M% %I% %E% SMI"
|
/*
|
||||||
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ASSERTION: D pointers do not allow invalid pointer accesses.
|
* ASSERTION: D pointers do not allow invalid pointer accesses.
|
||||||
@ -39,9 +41,10 @@
|
|||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
{
|
{
|
||||||
y = (int *) (-33007);
|
y = (int *)-33007;
|
||||||
*y = 3;
|
*y = 3;
|
||||||
trace(*y);
|
trace(*y);
|
||||||
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
ERROR
|
ERROR
|
||||||
|
@ -24,7 +24,9 @@
|
|||||||
* Use is subject to license terms.
|
* Use is subject to license terms.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma ident "%Z%%M% %I% %E% SMI"
|
/*
|
||||||
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ASSERTION: Demonstrating valid memory access.
|
* ASSERTION: Demonstrating valid memory access.
|
||||||
@ -40,10 +42,11 @@
|
|||||||
BEGIN
|
BEGIN
|
||||||
{
|
{
|
||||||
x = (int *)alloca(sizeof (int));
|
x = (int *)alloca(sizeof (int));
|
||||||
printf("Address x: %x\n", (int) x);
|
printf("Address x: %x\n", (int)x);
|
||||||
y = (int *) (x - 2);
|
y = (int *)(x - 2);
|
||||||
*y = 3;
|
*y = 3;
|
||||||
printf("Address y: %x\tValue: %d\n", (int) y, *y);
|
printf("Address y: %x\tValue: %d\n", (int)y, *y);
|
||||||
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
ERROR
|
ERROR
|
||||||
|
@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* CDDL HEADER END
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{
|
||||||
|
@ = count();
|
||||||
|
print(@);
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{
|
||||||
|
exit(0);
|
||||||
|
}
|
@ -20,10 +20,15 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2011 by Delphix. All rights reserved.
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
{
|
{
|
||||||
print((void)`p0);
|
print((void)`p0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
@ -20,10 +20,15 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2011 by Delphix. All rights reserved.
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
{
|
{
|
||||||
print();
|
print();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
@ -24,7 +24,9 @@
|
|||||||
* Use is subject to license terms.
|
* Use is subject to license terms.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma ident "%Z%%M% %I% %E% SMI"
|
/*
|
||||||
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ASSERTION:
|
* ASSERTION:
|
||||||
@ -39,7 +41,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#pragma D option bufsize=16
|
#pragma D option bufsize=32
|
||||||
#pragma D option bufpolicy=ring
|
#pragma D option bufpolicy=ring
|
||||||
#pragma D option statusrate=1nsec
|
#pragma D option statusrate=1nsec
|
||||||
|
|
||||||
|
@ -24,7 +24,9 @@
|
|||||||
* Use is subject to license terms.
|
* Use is subject to license terms.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma ident "%Z%%M% %I% %E% SMI"
|
/*
|
||||||
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ASSERTION:
|
* ASSERTION:
|
||||||
|
@ -24,8 +24,9 @@
|
|||||||
* Use is subject to license terms.
|
* Use is subject to license terms.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma ident "%Z%%M% %I% %E% SMI"
|
/*
|
||||||
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ASSERTION:
|
* ASSERTION:
|
||||||
@ -39,3 +40,8 @@ BEGIN
|
|||||||
|
|
||||||
trace();
|
trace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* CDDL HEADER END
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{
|
||||||
|
@ = count();
|
||||||
|
trace(@);
|
||||||
|
}
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{
|
||||||
|
exit(0);
|
||||||
|
}
|
@ -24,7 +24,9 @@
|
|||||||
* Use is subject to license terms.
|
* Use is subject to license terms.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma ident "%Z%%M% %I% %E% SMI"
|
/*
|
||||||
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ASSERTION:
|
* ASSERTION:
|
||||||
@ -37,3 +39,8 @@ BEGIN
|
|||||||
{
|
{
|
||||||
trace((void)`kmem_flags);
|
trace((void)`kmem_flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
@ -0,0 +1,29 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
* CDDL HEADER END
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Make sure we can scope types with modifiers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{
|
||||||
|
trace((D`int *)0);
|
||||||
|
trace((const D`int *)0);
|
||||||
|
exit(0);
|
||||||
|
}
|
@ -677,6 +677,12 @@ dt_action_trace(dtrace_hdl_t *dtp, dt_node_t *dnp, dtrace_stmtdesc_t *sdp)
|
|||||||
"%s( ) may not be applied to a translated pointer\n", act);
|
"%s( ) may not be applied to a translated pointer\n", act);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dnp->dn_args->dn_kind == DT_NODE_AGG) {
|
||||||
|
dnerror(dnp->dn_args, istrace ? D_TRACE_AGG : D_PRINT_AGG,
|
||||||
|
"%s( ) may not be applied to an aggregation%s\n", act,
|
||||||
|
istrace ? "" : " -- did you mean printa()?");
|
||||||
|
}
|
||||||
|
|
||||||
dt_cg(yypcb, dnp->dn_args);
|
dt_cg(yypcb, dnp->dn_args);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
|
* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2012 by Delphix. All rights reserved.
|
||||||
* Use is subject to license terms.
|
* Use is subject to license terms.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -254,11 +255,6 @@ dt_decl_spec(ushort_t kind, char *name)
|
|||||||
ddp->dd_kind = kind;
|
ddp->dd_kind = kind;
|
||||||
ddp->dd_name = name;
|
ddp->dd_name = name;
|
||||||
|
|
||||||
if (name != NULL && strchr(name, '`') != NULL) {
|
|
||||||
xyerror(D_DECL_SCOPE, "D scoping operator may not be used "
|
|
||||||
"in a type name\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
return (dt_decl_check(ddp));
|
return (dt_decl_check(ddp));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -190,8 +190,10 @@ typedef enum {
|
|||||||
D_PRINTA_AGGPROTO, /* printa() aggregation mismatch */
|
D_PRINTA_AGGPROTO, /* printa() aggregation mismatch */
|
||||||
D_TRACE_VOID, /* trace() argument has void type */
|
D_TRACE_VOID, /* trace() argument has void type */
|
||||||
D_TRACE_DYN, /* trace() argument has dynamic type */
|
D_TRACE_DYN, /* trace() argument has dynamic type */
|
||||||
|
D_TRACE_AGG, /* trace() argument is an aggregation */
|
||||||
D_PRINT_VOID, /* print() argument has void type */
|
D_PRINT_VOID, /* print() argument has void type */
|
||||||
D_PRINT_DYN, /* print() argument has dynamic type */
|
D_PRINT_DYN, /* print() argument has dynamic type */
|
||||||
|
D_PRINT_AGG, /* print() argument is an aggregation */
|
||||||
D_TRACEMEM_ADDR, /* tracemem() address bad type */
|
D_TRACEMEM_ADDR, /* tracemem() address bad type */
|
||||||
D_TRACEMEM_SIZE, /* tracemem() size bad type */
|
D_TRACEMEM_SIZE, /* tracemem() size bad type */
|
||||||
D_TRACEMEM_ARGS, /* tracemem() illegal number of args */
|
D_TRACEMEM_ARGS, /* tracemem() illegal number of args */
|
||||||
|
Loading…
Reference in New Issue
Block a user