1*2be1a816SJohn Birrell /* 2*2be1a816SJohn Birrell * CDDL HEADER START 3*2be1a816SJohn Birrell * 4*2be1a816SJohn Birrell * The contents of this file are subject to the terms of the 5*2be1a816SJohn Birrell * Common Development and Distribution License (the "License"). 6*2be1a816SJohn Birrell * You may not use this file except in compliance with the License. 7*2be1a816SJohn Birrell * 8*2be1a816SJohn Birrell * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*2be1a816SJohn Birrell * or http://www.opensolaris.org/os/licensing. 10*2be1a816SJohn Birrell * See the License for the specific language governing permissions 11*2be1a816SJohn Birrell * and limitations under the License. 12*2be1a816SJohn Birrell * 13*2be1a816SJohn Birrell * When distributing Covered Code, include this CDDL HEADER in each 14*2be1a816SJohn Birrell * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*2be1a816SJohn Birrell * If applicable, add the following below this CDDL HEADER, with the 16*2be1a816SJohn Birrell * fields enclosed by brackets "[]" replaced with your own identifying 17*2be1a816SJohn Birrell * information: Portions Copyright [yyyy] [name of copyright owner] 18*2be1a816SJohn Birrell * 19*2be1a816SJohn Birrell * CDDL HEADER END 20*2be1a816SJohn Birrell */ 21*2be1a816SJohn Birrell 22*2be1a816SJohn Birrell /* 23*2be1a816SJohn Birrell * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 24*2be1a816SJohn Birrell * Use is subject to license terms. 25*2be1a816SJohn Birrell */ 26*2be1a816SJohn Birrell 27*2be1a816SJohn Birrell #pragma ident "%Z%%M% %I% %E% SMI" 28*2be1a816SJohn Birrell 29*2be1a816SJohn Birrell /* 30*2be1a816SJohn Birrell * ASSERTION: Declare arrays of different data types and verify that the 31*2be1a816SJohn Birrell * addresses of the individual elements differ by an amount equal to the number 32*2be1a816SJohn Birrell * elements separating them multiplied by the size of each element. 33*2be1a816SJohn Birrell * 34*2be1a816SJohn Birrell * SECTION: Pointers and Arrays/Array Declarations and Storage; 35*2be1a816SJohn Birrell * Pointers and Arrays/Pointer Arithmetic 36*2be1a816SJohn Birrell * 37*2be1a816SJohn Birrell * NOTES: 38*2be1a816SJohn Birrell * 39*2be1a816SJohn Birrell */ 40*2be1a816SJohn Birrell 41*2be1a816SJohn Birrell #pragma D option quiet 42*2be1a816SJohn Birrell 43*2be1a816SJohn Birrell char char_array[5]; 44*2be1a816SJohn Birrell short short_array[5]; 45*2be1a816SJohn Birrell int int_array[5]; 46*2be1a816SJohn Birrell long long_array[5]; 47*2be1a816SJohn Birrell long long long_long_array[5]; 48*2be1a816SJohn Birrell int8_t int8_array[5]; 49*2be1a816SJohn Birrell int16_t int16_array[5]; 50*2be1a816SJohn Birrell int32_t int32_array[5]; 51*2be1a816SJohn Birrell int64_t int64_array[5]; 52*2be1a816SJohn Birrell intptr_t intptr_array[5]; 53*2be1a816SJohn Birrell uint8_t uint8_array[5]; 54*2be1a816SJohn Birrell uint16_t uint16_array[5]; 55*2be1a816SJohn Birrell uint32_t uint32_array[5]; 56*2be1a816SJohn Birrell uint64_t uint64_array[5]; 57*2be1a816SJohn Birrell uintptr_t uintptr_array[5]; 58*2be1a816SJohn Birrell 59*2be1a816SJohn Birrell /* 60*2be1a816SJohn Birrell float float_array[5]; 61*2be1a816SJohn Birrell double double_array[5]; 62*2be1a816SJohn Birrell long double long_double_array[5]; 63*2be1a816SJohn Birrell 64*2be1a816SJohn Birrell string string_array[5]; 65*2be1a816SJohn Birrell */ 66*2be1a816SJohn Birrell 67*2be1a816SJohn Birrell struct record { 68*2be1a816SJohn Birrell char ch; 69*2be1a816SJohn Birrell int in; 70*2be1a816SJohn Birrell } struct_array[5]; 71*2be1a816SJohn Birrell 72*2be1a816SJohn Birrell struct { 73*2be1a816SJohn Birrell char ch; 74*2be1a816SJohn Birrell int in; 75*2be1a816SJohn Birrell } anon_struct_array[5]; 76*2be1a816SJohn Birrell 77*2be1a816SJohn Birrell union record { 78*2be1a816SJohn Birrell char ch; 79*2be1a816SJohn Birrell int in; 80*2be1a816SJohn Birrell } union_array[5]; 81*2be1a816SJohn Birrell 82*2be1a816SJohn Birrell union { 83*2be1a816SJohn Birrell char ch; 84*2be1a816SJohn Birrell int in; 85*2be1a816SJohn Birrell } anon_union_array[5]; 86*2be1a816SJohn Birrell 87*2be1a816SJohn Birrell enum colors { 88*2be1a816SJohn Birrell RED, 89*2be1a816SJohn Birrell GREEN, 90*2be1a816SJohn Birrell BLUE 91*2be1a816SJohn Birrell } enum_array[5]; 92*2be1a816SJohn Birrell 93*2be1a816SJohn Birrell BEGIN 94*2be1a816SJohn Birrell { 95*2be1a816SJohn Birrell char_var0 = &char_array[0]; char_var2 = &char_array[2]; 96*2be1a816SJohn Birrell short_var0 = &short_array[0]; short_var3 = &short_array[3]; 97*2be1a816SJohn Birrell int_var3 = &int_array[3]; int_var5 = &int_array[5]; 98*2be1a816SJohn Birrell 99*2be1a816SJohn Birrell long_var0 = &long_array[0]; long_var4 = &long_array[4]; 100*2be1a816SJohn Birrell long_long_var0 = &long_long_array[0]; 101*2be1a816SJohn Birrell long_long_var2 = &long_long_array[2]; 102*2be1a816SJohn Birrell int8_var3 = &int8_array[3]; int8_var5 = &int8_array[5]; 103*2be1a816SJohn Birrell 104*2be1a816SJohn Birrell int16_var0 = &int16_array[0]; int16_var4 = &int16_array[4]; 105*2be1a816SJohn Birrell int32_var0 = &int32_array[0]; int32_var3 = &int32_array[3]; 106*2be1a816SJohn Birrell int64_var0 = &int64_array[0]; int64_var1 = &int64_array[1]; 107*2be1a816SJohn Birrell 108*2be1a816SJohn Birrell uintptr_var0 = &uintptr_array[0]; uintptr_var2 = &uintptr_array[2]; 109*2be1a816SJohn Birrell struct_var0 = &struct_array[0]; struct_var2 = &struct_array[2]; 110*2be1a816SJohn Birrell anon_struct_var3 = &anon_struct_array[3]; 111*2be1a816SJohn Birrell anon_struct_var5 = &anon_struct_array[5]; 112*2be1a816SJohn Birrell 113*2be1a816SJohn Birrell union_var0 = &union_array[0]; union_var3 = &union_array[3]; 114*2be1a816SJohn Birrell anon_union_var0 = &anon_union_array[0]; 115*2be1a816SJohn Birrell anon_union_var4 = &anon_union_array[4]; 116*2be1a816SJohn Birrell enum_var0 = &enum_array[0]; enum_var2 = &enum_array[2]; 117*2be1a816SJohn Birrell 118*2be1a816SJohn Birrell printf("char_var2 - char_var0: %d\n", 119*2be1a816SJohn Birrell (int) char_var2 - (int) char_var0); 120*2be1a816SJohn Birrell printf("short_var3 - short_var0: %d\n", 121*2be1a816SJohn Birrell (int) short_var3 - (int) short_var0); 122*2be1a816SJohn Birrell printf("int_var5 - int_var3: %d\n", (int) int_var5 - (int) int_var3); 123*2be1a816SJohn Birrell 124*2be1a816SJohn Birrell printf("long_var4 - long_var0: %d\n", 125*2be1a816SJohn Birrell (int) long_var4 - (int) long_var0); 126*2be1a816SJohn Birrell printf("long_long_var2 - long_long_var0: %d\n", 127*2be1a816SJohn Birrell (int) long_long_var2 - (int) long_long_var0); 128*2be1a816SJohn Birrell printf("int8_var5 - int8_var3: %d\n", 129*2be1a816SJohn Birrell (int) int8_var5 - (int) int8_var3); 130*2be1a816SJohn Birrell 131*2be1a816SJohn Birrell printf("int16_var4 - int16_var0: %d\n", 132*2be1a816SJohn Birrell (int) int16_var4 - (int) int16_var0); 133*2be1a816SJohn Birrell printf("int32_var3 - int32_var0: %d\n", 134*2be1a816SJohn Birrell (int) int32_var3 - (int) int32_var0); 135*2be1a816SJohn Birrell printf("int64_var1 - int64_var0: %d\n", 136*2be1a816SJohn Birrell (int) int64_var1 - (int) int64_var0); 137*2be1a816SJohn Birrell 138*2be1a816SJohn Birrell printf("uintptr_var2 - uintptr_var0: %d\n", 139*2be1a816SJohn Birrell (int) uintptr_var2 - (int) uintptr_var0); 140*2be1a816SJohn Birrell printf("struct_var2 - struct_var0: %d\n", 141*2be1a816SJohn Birrell (int) struct_var2 - (int) struct_var0); 142*2be1a816SJohn Birrell printf("anon_struct_var5 - anon_struct_var3: %d\n", 143*2be1a816SJohn Birrell (int) anon_struct_var5 - (int) anon_struct_var3); 144*2be1a816SJohn Birrell 145*2be1a816SJohn Birrell printf("union_var3 - union_var0: %d\n", 146*2be1a816SJohn Birrell (int) union_var3 - (int) union_var0); 147*2be1a816SJohn Birrell printf("anon_union_var4 - anon_union_var0: %d\n", 148*2be1a816SJohn Birrell (int) anon_union_var4 - (int) anon_union_var0); 149*2be1a816SJohn Birrell printf("enum_var2 - enum_var0: %d\n", 150*2be1a816SJohn Birrell (int) enum_var2 - (int) enum_var0); 151*2be1a816SJohn Birrell exit(0); 152*2be1a816SJohn Birrell } 153*2be1a816SJohn Birrell 154*2be1a816SJohn Birrell END 155*2be1a816SJohn Birrell /(2 != ((int) char_var2 - (int) char_var0)) || 156*2be1a816SJohn Birrell (6 != ((int) short_var3 - (int) short_var0)) || 157*2be1a816SJohn Birrell (8 != ((int) int_var5 - (int) int_var3)) || 158*2be1a816SJohn Birrell ((32 != ((int) long_var4 - (int) long_var0)) && 159*2be1a816SJohn Birrell (16 != ((int) long_var4 - (int) long_var0))) || 160*2be1a816SJohn Birrell (16 != ((int) long_long_var2 - (int) long_long_var0)) || 161*2be1a816SJohn Birrell (2 != ((int) int8_var5 - (int) int8_var3)) 162*2be1a816SJohn Birrell || (8 != ((int) int16_var4 - (int) int16_var0)) || 163*2be1a816SJohn Birrell (12 != ((int) int32_var3 - (int) int32_var0)) || 164*2be1a816SJohn Birrell (8 != ((int) int64_var1 - (int) int64_var0)) || 165*2be1a816SJohn Birrell ((16 != ((int) uintptr_var2 - (int) uintptr_var0)) 166*2be1a816SJohn Birrell && (8 != ((int) uintptr_var2 - (int) uintptr_var0))) || 167*2be1a816SJohn Birrell (16 != ((int) struct_var2 - (int) struct_var0)) || 168*2be1a816SJohn Birrell (16 != ((int) anon_struct_var5 - (int) anon_struct_var3)) 169*2be1a816SJohn Birrell || (12 != ((int) union_var3 - (int) union_var0)) || 170*2be1a816SJohn Birrell (16 != ((int) anon_union_var4 - (int) anon_union_var0)) || 171*2be1a816SJohn Birrell (8 != ((int) enum_var2 - (int) enum_var0))/ 172*2be1a816SJohn Birrell { 173*2be1a816SJohn Birrell exit(1); 174*2be1a816SJohn Birrell } 175