From f215e02bf85f68d3a6106c2a1f4f7f063f819064 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 11 Apr 2024 10:17:27 +0200 Subject: Adding upstream version 7.0.14-dfsg. Signed-off-by: Daniel Baumann --- .../cmd/dtrace/test/tst/common/struct/Makefile.kup | 0 .../common/struct/err.D_ADDROF_VAR.StructPointer.d | 59 +++++++++ .../struct/err.D_DECL_COMBO.StructWithoutColon.d | 74 ++++++++++++ .../struct/err.D_DECL_COMBO.StructWithoutColon1.d | 68 +++++++++++ .../common/struct/err.D_DECL_INCOMPLETE.circular.d | 66 ++++++++++ .../common/struct/err.D_DECL_INCOMPLETE.order.d | 69 +++++++++++ .../common/struct/err.D_DECL_INCOMPLETE.order2.d | 108 +++++++++++++++++ .../struct/err.D_DECL_INCOMPLETE.recursive.d | 59 +++++++++ .../common/struct/err.D_DECL_INCOMPLETE.simple.d | 59 +++++++++ .../tst/common/struct/err.D_DECL_VOIDOBJ.baddec.d | 46 +++++++ .../common/struct/err.D_PROTO_ARG.DupStructAssoc.d | 80 +++++++++++++ .../test/tst/common/struct/tst.StructAssoc.d | 71 +++++++++++ .../test/tst/common/struct/tst.StructDataTypes.d | 133 +++++++++++++++++++++ .../test/tst/common/struct/tst.StructInside.d | 124 +++++++++++++++++++ .../test/tst/common/struct/tst.clauselocal.d | 52 ++++++++ .../test/tst/common/struct/tst.clauselocal.d.out | 2 + 16 files changed, 1070 insertions(+) create mode 100644 src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/Makefile.kup create mode 100644 src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_ADDROF_VAR.StructPointer.d create mode 100644 src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_COMBO.StructWithoutColon.d create mode 100644 src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_COMBO.StructWithoutColon1.d create mode 100644 src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.circular.d create mode 100644 src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.order.d create mode 100644 src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.order2.d create mode 100644 src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.recursive.d create mode 100644 src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.simple.d create mode 100644 src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_VOIDOBJ.baddec.d create mode 100644 src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_PROTO_ARG.DupStructAssoc.d create mode 100644 src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.StructAssoc.d create mode 100644 src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.StructDataTypes.d create mode 100644 src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.StructInside.d create mode 100644 src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.clauselocal.d create mode 100644 src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.clauselocal.d.out (limited to 'src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct') diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/Makefile.kup b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/Makefile.kup new file mode 100644 index 00000000..e69de29b diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_ADDROF_VAR.StructPointer.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_ADDROF_VAR.StructPointer.d new file mode 100644 index 00000000..85e49fa0 --- /dev/null +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_ADDROF_VAR.StructPointer.d @@ -0,0 +1,59 @@ +/* + * 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. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: Trying to access the members of a user defined struct by means of + * a pointer to it should throw a D_ADDROF_VAR compiler error. + * + * SECTION: Structs and Unions/Pointers to Structs + * + */ + +#pragma D option quiet + +struct record { + int position; + int content; + +}; + +struct record var; +struct record *ptr; +BEGIN +{ + + var.position = 1; + var.content = 'a'; + + ptr = &var; + + printf("ptr->position: %d\tptr->content: %c\n", + ptr->position, ptr->content); + + exit(0); +} diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_COMBO.StructWithoutColon.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_COMBO.StructWithoutColon.d new file mode 100644 index 00000000..004e9019 --- /dev/null +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_COMBO.StructWithoutColon.d @@ -0,0 +1,74 @@ +/* + * 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. + */ + +/* + * ASSERTION: + * Combining multiple struct definitions in a single line should throw a + * compiler error. + * + * SECTION: Structs and Unions/Structs + * + */ + + +#pragma ident "%Z%%M% %I% %E% SMI" +#pragma D option quiet + +struct superStruct { + int position; + char content; +} + +struct record { + int position; + char content; +} + + +struct pirate { + int position; + char content; +}; + +struct superStruct super; +struct record rec; +struct pirate pir; + +BEGIN +{ + rec.content = 'a'; + rec.position = 1; + + pir.content = 'b'; + pir.position = 2; + + printf( + "rec.content: %c\nrec.position: %d\npir.content: %c\npir.position: %d", + rec.content, rec.position, pir.content, pir.position); + + exit(0); +} + diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_COMBO.StructWithoutColon1.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_COMBO.StructWithoutColon1.d new file mode 100644 index 00000000..1c403b67 --- /dev/null +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_COMBO.StructWithoutColon1.d @@ -0,0 +1,68 @@ +/* + * 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. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: + * Combining multiple struct definitions in a single line should throw a + * compiler error. + * + * SECTION: Structs and Unions/Structs + * + */ + +#pragma D option quiet + +struct record { + int position; + char content; +}; + + +struct pirate { + int position; + char content; +} + +struct record rec; +struct pirate pir; + +BEGIN +{ + rec.content = 'a'; + rec.position = 1; + + pir.content = 'b'; + pir.position = 2; + + printf( + "rec.content: %c\nrec.position: %d\npir.content: %c\npir.position: %d", + rec.content, rec.position, pir.content, pir.position); + + exit(0); +} + diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.circular.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.circular.d new file mode 100644 index 00000000..dcbc8ee2 --- /dev/null +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.circular.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 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * ASSERTION: + * A circular definition of structs (two structs defining each other as + * members) should throw an error at compile time. + * + * SECTION: Structs and Unions/Structs + * + */ + + +#pragma ident "%Z%%M% %I% %E% SMI" +#pragma D option quiet + + +struct record { + struct pirate p; + int position; + char content; +}; + + +struct pirate { + struct record r; + int position; + char content; +}; + +struct record rec; +struct pirate pir; + +BEGIN +{ + rec.position = 0; + rec.content = 'a'; + printf("rec.position: %d\nrec.content: %c\n", + rec.position, rec.content); + + exit(0); +} + diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.order.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.order.d new file mode 100644 index 00000000..932f4dc9 --- /dev/null +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.order.d @@ -0,0 +1,69 @@ +/* + * 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. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: + * When two struct are defined such that one of them contains the other, the + * inner struct has to be defined first. + * + * SECTION: Structs and Unions/Structs + * + */ + +#pragma D option quiet + + +struct record { + struct pirate p; + int position; + char content; +}; + +struct pirate { + int position; + char content; +}; + +struct record rec; +struct pirate pir; + +BEGIN +{ + rec.content = 'y'; + rec.position = 2; + + pir.content = 'z'; + pir.position = 26; + + printf( + "rec.content: %c\nrec.position: %d\npir.content: %c\npir.position: %d", + rec.content, rec.position, pir.content, pir.position); + + exit(0); +} + diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.order2.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.order2.d new file mode 100644 index 00000000..807b6186 --- /dev/null +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.order2.d @@ -0,0 +1,108 @@ +/* + * 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. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: + * When struct definitions are nested inside one another, the inner struct + * should be defined before the outer one can declare it as a variable. + * + * SECTION: Structs and Unions/Structs + * + */ + +#pragma D option quiet + +struct InnerMore { + struct InnerMost IMost; + int dummy_More; +}; + +struct InnerMost { + int position; + char content; +}; + +struct Inner { + struct InnerMore IMore; + int dummy_More; +}; + +struct Outer { + struct Inner I; + int dummy_More; +}; + +struct OuterMore { + struct Outer O; + int dummy_More; +}; + +struct OuterMost { + struct OuterMore OMore; + int dummy_More; +} OMost; + + +BEGIN +{ + + OMost.dummy_More = 0; + OMost.OMore.dummy_More = 1; + OMost.OMore.O.dummy_More = 2; + OMost.OMore.O.I.dummy_More = 3; + OMost.OMore.O.I.IMore.dummy_More = 4; + OMost.OMore.O.I.IMore.IMost.position = 5; + OMost.OMore.O.I.IMore.IMost.content = 'e'; + + printf("OMost.dummy_More: %d\nOMost.OMore.dummy_More: %d\n", + OMost.dummy_More, OMost.OMore.dummy_More); + + printf("OMost.OMore.O.dummy_More: %d\nOMost.OMore.O.I.dummy_More: %d\n", + OMost.OMore.O.dummy_More, OMost.OMore.O.I.dummy_More); + + printf("OMost.OMore.O.I.IMore.dummy_More:%d\n", + OMost.OMore.O.I.IMore.dummy_More); + + printf("OMost.OMore.O.I.IMore.IMost.position: %d\n", + OMost.OMore.O.I.IMore.IMost.position); + + printf("OMost.OMore.O.I.IMore.IMost.content: %c\n", + OMost.OMore.O.I.IMore.IMost.content); + + exit(0); +} + +END +/(0 != OMost.dummy_More) || (1 != OMost.OMore.dummy_More) + (2 != OMost.OMore.O.dummy_More) || (3 != OMost.OMore.O.I.dummy_More) + (4 != OMost.OMore.O.I.IMore.dummy_More) + (5 != OMost.OMore.O.I.IMore.IMost.position) + ('e' != OMost.OMore.O.I.IMore.IMost.content)/ +{ + exit(1); +} diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.recursive.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.recursive.d new file mode 100644 index 00000000..011fbdd3 --- /dev/null +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.recursive.d @@ -0,0 +1,59 @@ +/* + * 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. + */ + +/* + * ASSERTION: Recursive naming of structures should produce compiler error. + * + * SECTION: Structs and Unions/Structs + * + */ + + +#pragma ident "%Z%%M% %I% %E% SMI" +#pragma D option quiet + +struct record { + struct record rec; + int position; + char content; +}; + +struct record r1; +struct record r2; + +BEGIN +{ + r1.position = 1; + r1.content = 'a'; + + r2.position = 2; + r2.content = 'b'; + + printf("r1.position: %d\nr1.content: %c\n", r1.position, r1.content); + printf("r2.position: %d\nr2.content: %c\n", r2.position, r2.content); + + exit(0); +} diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.simple.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.simple.d new file mode 100644 index 00000000..7fc54ff0 --- /dev/null +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_INCOMPLETE.simple.d @@ -0,0 +1,59 @@ +/* + * 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. + */ + +/* + * ASSERTION: + * Declaring an inner struct within another struct and not defining it should + * throw a compiler error. + * + * SECTION: Structs and Unions/Structs + * + */ + + +#pragma ident "%Z%%M% %I% %E% SMI" +#pragma D option quiet + + +struct record { + struct pirate p; + int position; + char content; +}; + + +struct record rec; + +BEGIN +{ + rec.position = 0; + rec.content = 'a'; + printf("rec.position: %d\nrec.content: %c\n", + rec.position, rec.content); + + exit(0); +} + diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_VOIDOBJ.baddec.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_VOIDOBJ.baddec.d new file mode 100644 index 00000000..bba126fe --- /dev/null +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_DECL_VOIDOBJ.baddec.d @@ -0,0 +1,46 @@ +/* + * 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. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: + * Declaring void objects will result in a D_DECL_VOIDOBJ error + * + * SECTION: Structs and Unions/Structs + * + */ + +#pragma D option quiet + +struct { + int trace(); +}; + +BEGIN +{ + exit(1); +} diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_PROTO_ARG.DupStructAssoc.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_PROTO_ARG.DupStructAssoc.d new file mode 100644 index 00000000..0eea2d8d --- /dev/null +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/err.D_PROTO_ARG.DupStructAssoc.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 2006 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: + * Declaring an associative array with a struct to be its key type and trying to + * index with another struct having the same composition throws an error. + * + * SECTION: Structs and Unions/Structs + * + */ + +#pragma D option quiet + +struct record { + int position; + char content; +}; + +struct pirate { + int position; + char content; +}; + +struct record r1; +struct record r2; +struct pirate p1; +struct pirate p2; + +BEGIN +{ + r1.position = 1; + r1.content = 'a'; + + r2.position = 2; + r2.content = 'b'; + + p1.position = 1; + p1.content = 'a'; + + p2.position = 2; + p2.content = 'b'; + + assoc_array[r1] = 1000; + assoc_array[r2] = 2000; + assoc_array[p1] = 3333; + assoc_array[p2] = 4444; + + printf("assoc_array[r1]: %d\n", assoc_array[r1]); + printf("assoc_array[r2]: %d\n", assoc_array[r2]); + printf("assoc_array[p1]: %d\n", assoc_array[p1]); + printf("assoc_array[p2]: %d\n", assoc_array[p2]); + + exit(0); +} diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.StructAssoc.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.StructAssoc.d new file mode 100644 index 00000000..ead235da --- /dev/null +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.StructAssoc.d @@ -0,0 +1,71 @@ +/* + * 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. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: + * When a struct is used as a key for an associative array, the key is formed + * by using the values of the members of the struct variable and not the + * address of the struct variable. + * + * SECTION: Structs and Unions/Structs + * + */ + +#pragma D option quiet + +struct record { + int position; + char content; +}; + +struct record r1; +struct record r2; + +BEGIN +{ + r1.position = 1; + r1.content = 'a'; + + r2.position = 1; + r2.content = 'a'; + + assoc_array[r1] = 1000; + assoc_array[r2] = 2000; + + printf("assoc_array[r1]: %d\n", assoc_array[r1]); + printf("assoc_array[r2]: %d\n", assoc_array[r2]); + + exit(0); +} + +END +/assoc_array[r1] != assoc_array[r2]/ +{ + printf("Error"); + exit(1); +} diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.StructDataTypes.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.StructDataTypes.d new file mode 100644 index 00000000..5cfdc325 --- /dev/null +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.StructDataTypes.d @@ -0,0 +1,133 @@ +/* + * 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. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: Declaration of the different data types within a struct and + * their definitions in a later clause should work fine. + * + * SECTION: Structs and Unions/Structs + * + * NOTES: The floats, doubles and strings have not been implemented yet. + * When they do, appropriate lines in the code below should be uncommented. + * Similarly, the lines with the kmem_flags pointer assignment should be + * uncommented when the issues pertaining to it are clarified. + * + */ +#pragma D option quiet + +struct record { + char new_char; + short new_short; + int new_int; + long new_long; + long long new_long_long; + int8_t new_int8; + int16_t new_int16; + int32_t new_int32; + int64_t new_int64; + intptr_t new_intptr; + uint8_t new_uint8; + uint16_t new_uint16; + uint32_t new_uint32; + uint64_t new_uint64; + uintptr_t new_uintptr; + + /* + float new_float; + double new_double; + long double new_long_double; + + string new_string; + */ + + struct { + char ch; + int in; + long lg; + } new_struct; + + union { + char ch; + int in; + long lg; + } new_union; + +enum colors { + RED, + GREEN, + BLUE +} new_enum; + + + int *pointer; +} var; + +/* + var.pointer = &`kmem_flags; +*/ +BEGIN +{ + var.new_char = 'c'; + var.new_short = 10; + var.new_int = 100; + var.new_long = 1234567890; + var.new_long_long = 1234512345; + var.new_int8 = 'p'; + var.new_int16 = 20; + var.new_int32 = 200; + var.new_int64 = 2000000; + var.new_intptr = 0x12345; + var.new_uint8 = 'q'; + var.new_uint16 = 30; + var.new_uint32 = 300; + var.new_uint64 = 3000000; + var.new_uintptr = 0x67890; + +/* var.new_float = 1.23456; + var.new_double = 2.34567890; + var.new_long_double = 3.567890123; + + var.new_string = "hello"; +*/ + +/* + var.pointer = &`kmem_flags; +*/ + + var.new_struct.ch = 'c'; + var.new_struct.in = 4; + var.new_struct.lg = 4; + + var.new_union.ch = 'd'; + var.new_union.in = 5; + var.new_union.lg = 5; + + this->var = var; + + exit(0); +} diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.StructInside.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.StructInside.d new file mode 100644 index 00000000..159accc4 --- /dev/null +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.StructInside.d @@ -0,0 +1,124 @@ +/* + * 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. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +/* + * ASSERTION: + * Verify the nested behavior of structs. + * + * SECTION: Structs and Unions/Structs + * + */ + +#pragma D option quiet + +struct InnerMost { + int position; + char content; +}; + +struct InnerMore { + struct InnerMost IMost; + int dummy_More; +}; + +struct Inner { + struct InnerMore IMore; + int dummy_More; +}; + +struct Outer { + struct Inner I; + int dummy_More; +}; + +struct OuterMore { + struct Outer O; + int dummy_More; +}; + +struct OuterMost { + struct OuterMore OMore; + int dummy_More; +} OMost; + +struct OuterMost OMostCopy; + +BEGIN +{ + + OMost.dummy_More = 0; + OMost.OMore.dummy_More = 1; + OMost.OMore.O.dummy_More = 2; + OMost.OMore.O.I.dummy_More = 3; + OMost.OMore.O.I.IMore.dummy_More = 4; + OMost.OMore.O.I.IMore.IMost.position = 5; + OMost.OMore.O.I.IMore.IMost.content = 'e'; + + printf("OMost.dummy_More: %d\nOMost.OMore.dummy_More: %d\n", + OMost.dummy_More, OMost.OMore.dummy_More); + + printf("OMost.OMore.O.dummy_More: %d\n", + OMost.OMore.O.dummy_More); + + printf("OMost.OMore.O.I.dummy_More: %d\n", + OMost.OMore.O.I.dummy_More); + + printf("OMost.OMore.O.I.IMore.dummy_More:%d\n", + OMost.OMore.O.I.IMore.dummy_More); + + printf("OMost.OMore.O.I.IMore.IMost.position: %d\n", + OMost.OMore.O.I.IMore.IMost.position); + + printf("OMost.OMore.O.I.IMore.IMost.content: %c\n", + OMost.OMore.O.I.IMore.IMost.content); + + OMostCopy = OMost; + + exit(0); +} + +END +/(0 != OMost.dummy_More) || (1 != OMost.OMore.dummy_More) || + (2 != OMost.OMore.O.dummy_More) || (3 != OMost.OMore.O.I.dummy_More) || + (4 != OMost.OMore.O.I.IMore.dummy_More) || + (5 != OMost.OMore.O.I.IMore.IMost.position) || + ('e' != OMost.OMore.O.I.IMore.IMost.content)/ +{ + exit(1); +} + +END +/(0 != OMostCopy.dummy_More) || (1 != OMostCopy.OMore.dummy_More) || + (2 != OMostCopy.OMore.O.dummy_More) || + (3 != OMostCopy.OMore.O.I.dummy_More) || + (4 != OMostCopy.OMore.O.I.IMore.dummy_More) || + (5 != OMostCopy.OMore.O.I.IMore.IMost.position) || + ('e' != OMostCopy.OMore.O.I.IMore.IMost.content)/ +{ + exit(2); +} diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.clauselocal.d b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.clauselocal.d new file mode 100644 index 00000000..0a7e80e4 --- /dev/null +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.clauselocal.d @@ -0,0 +1,52 @@ +/* + * 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. + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#pragma D option quiet + +struct foo { + int x; + char y; + short z; +}; + +this struct foo bar; +long bignum; + +BEGIN +{ + this->bar.x = 1; + this->bar.y = ','; + this->bar.z = 1234; +} + +BEGIN +{ + printf("Die %s%c %s.\n", this->bar.x == 1 ? "SystemTap" : "DTrace", + this->bar.y, this->bar.z == 1234 ? "Die" : "The"); + exit(0); +} diff --git a/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.clauselocal.d.out b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.clauselocal.d.out new file mode 100644 index 00000000..c3fbf224 --- /dev/null +++ b/src/VBox/ExtPacks/VBoxDTrace/onnv/cmd/dtrace/test/tst/common/struct/tst.clauselocal.d.out @@ -0,0 +1,2 @@ +Die SystemTap, Die. + -- cgit v1.2.3