blob: 5dd111206455f5c538f7f7c0417c51f8ccd6c0eb [file] [log] [blame]
Michael Woerister55a8bd52014-04-24 09:35:481// Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT
2// file at the top-level directory of this distribution and at
3// http://rust-lang.org/COPYRIGHT.
4//
5// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8// option. This file may not be copied, modified, or distributed
9// except according to those terms.
10
Vadim Chugunov1b2dc762014-08-11 23:24:1911// ignore-windows: FIXME #13256
Michael Woerister55a8bd52014-04-24 09:35:4812// ignore-android: FIXME(#10381)
Michael Woerister47e8cf72014-10-09 14:31:0313// min-lldb-version: 310
Michael Woerister55a8bd52014-04-24 09:35:4814
15// compile-flags:-g
Michael Woeristerc7f45a92014-07-09 12:46:0916
17// === GDB TESTS ===================================================================================
18
Michael Woerister55a8bd52014-04-24 09:35:4819// gdb-command:print 'simple-struct::NO_PADDING_16'
20// gdb-check:$1 = {x = 1000, y = -1001}
21
22// gdb-command:print 'simple-struct::NO_PADDING_32'
23// gdb-check:$2 = {x = 1, y = 2, z = 3}
24
25// gdb-command:print 'simple-struct::NO_PADDING_64'
26// gdb-check:$3 = {x = 4, y = 5, z = 6}
27
28// gdb-command:print 'simple-struct::NO_PADDING_163264'
29// gdb-check:$4 = {a = 7, b = 8, c = 9, d = 10}
30
31// gdb-command:print 'simple-struct::INTERNAL_PADDING'
32// gdb-check:$5 = {x = 11, y = 12}
33
34// gdb-command:print 'simple-struct::PADDING_AT_END'
35// gdb-check:$6 = {x = 13, y = 14}
36
37// gdb-command:run
Michael Woerister55a8bd52014-04-24 09:35:4838
39// gdb-command:print no_padding16
40// gdb-check:$7 = {x = 10000, y = -10001}
41
42// gdb-command:print no_padding32
43// gdb-check:$8 = {x = -10002, y = -10003.5, z = 10004}
44
45// gdb-command:print no_padding64
46// gdb-check:$9 = {x = -10005.5, y = 10006, z = 10007}
47
48// gdb-command:print no_padding163264
49// gdb-check:$10 = {a = -10008, b = 10009, c = 10010, d = 10011}
50
51// gdb-command:print internal_padding
52// gdb-check:$11 = {x = 10012, y = -10013}
53
54// gdb-command:print padding_at_end
55// gdb-check:$12 = {x = -10014, y = 10015}
56
57// gdb-command:print 'simple-struct::NO_PADDING_16'
58// gdb-check:$13 = {x = 100, y = -101}
59
60// gdb-command:print 'simple-struct::NO_PADDING_32'
61// gdb-check:$14 = {x = -15, y = -16, z = 17}
62
63// gdb-command:print 'simple-struct::NO_PADDING_64'
64// gdb-check:$15 = {x = -18, y = 19, z = 20}
65
66// gdb-command:print 'simple-struct::NO_PADDING_163264'
67// gdb-check:$16 = {a = -21, b = 22, c = 23, d = 24}
68
69// gdb-command:print 'simple-struct::INTERNAL_PADDING'
70// gdb-check:$17 = {x = 25, y = -26}
71
72// gdb-command:print 'simple-struct::PADDING_AT_END'
73// gdb-check:$18 = {x = -27, y = 28}
74
Michael Woerister54a5a2b2014-10-29 06:13:2975// gdb-command:continue
Michael Woerister55a8bd52014-04-24 09:35:4876
Michael Woeristerc7f45a92014-07-09 12:46:0977// === LLDB TESTS ==================================================================================
78
79// lldb-command:run
80
81// lldb-command:print no_padding16
82// lldb-check:[...]$0 = NoPadding16 { x: 10000, y: -10001 }
83
84// lldb-command:print no_padding32
85// lldb-check:[...]$1 = NoPadding32 { x: -10002, y: -10003.5, z: 10004 }
86
87// lldb-command:print no_padding64
88// lldb-check:[...]$2 = NoPadding64 { x: -10005.5, y: 10006, z: 10007 }
89
90// lldb-command:print no_padding163264
91// lldb-check:[...]$3 = NoPadding163264 { a: -10008, b: 10009, c: 10010, d: 10011 }
92
93// lldb-command:print internal_padding
94// lldb-check:[...]$4 = InternalPadding { x: 10012, y: -10013 }
95
96// lldb-command:print padding_at_end
97// lldb-check:[...]$5 = PaddingAtEnd { x: -10014, y: 10015 }
98
Aaron Turone0ad0fc2014-10-27 22:37:0799#![allow(unused_variables)];
Michael Woerister55a8bd52014-04-24 09:35:48100#![allow(dead_code)];
101
102struct NoPadding16 {
103 x: u16,
104 y: i16
105}
106
Jakub Wieczorek17da4c72014-10-11 17:24:33107struct NoPadding32 {
Michael Woerister55a8bd52014-04-24 09:35:48108 x: i32,
109 y: f32,
110 z: u32
111}
112
113struct NoPadding64 {
114 x: f64,
115 y: i64,
116 z: u64
117}
118
119struct NoPadding163264 {
120 a: i16,
121 b: u16,
122 c: i32,
123 d: u64
124}
125
126struct InternalPadding {
127 x: u16,
128 y: i64
129}
130
131struct PaddingAtEnd {
132 x: i64,
133 y: u16
134}
135
136static mut NO_PADDING_16: NoPadding16 = NoPadding16 {
137 x: 1000,
138 y: -1001
139};
140
141static mut NO_PADDING_32: NoPadding32 = NoPadding32 {
142 x: 1,
143 y: 2.0,
144 z: 3
145};
146
147static mut NO_PADDING_64: NoPadding64 = NoPadding64 {
148 x: 4.0,
149 y: 5,
150 z: 6
151};
152
153static mut NO_PADDING_163264: NoPadding163264 = NoPadding163264 {
154 a: 7,
155 b: 8,
156 c: 9,
157 d: 10
158};
159
160static mut INTERNAL_PADDING: InternalPadding = InternalPadding {
161 x: 11,
162 y: 12
163};
164
165static mut PADDING_AT_END: PaddingAtEnd = PaddingAtEnd {
166 x: 13,
167 y: 14
168};
169
Michael Woerister55a8bd52014-04-24 09:35:48170fn main() {
171 let no_padding16 = NoPadding16 { x: 10000, y: -10001 };
172 let no_padding32 = NoPadding32 { x: -10002, y: -10003.5, z: 10004 };
173 let no_padding64 = NoPadding64 { x: -10005.5, y: 10006, z: 10007 };
174 let no_padding163264 = NoPadding163264 { a: -10008, b: 10009, c: 10010, d: 10011 };
175
176 let internal_padding = InternalPadding { x: 10012, y: -10013 };
177 let padding_at_end = PaddingAtEnd { x: -10014, y: 10015 };
178
Michael Woerister55a8bd52014-04-24 09:35:48179 unsafe {
180 NO_PADDING_16.x = 100;
181 NO_PADDING_16.y = -101;
182
183 NO_PADDING_32.x = -15;
184 NO_PADDING_32.y = -16.0;
185 NO_PADDING_32.z = 17;
186
187 NO_PADDING_64.x = -18.0;
188 NO_PADDING_64.y = 19;
189 NO_PADDING_64.z = 20;
190
191 NO_PADDING_163264.a = -21;
192 NO_PADDING_163264.b = 22;
193 NO_PADDING_163264.c = 23;
194 NO_PADDING_163264.d = 24;
195
196 INTERNAL_PADDING.x = 25;
197 INTERNAL_PADDING.y = -26;
198
199 PADDING_AT_END.x = -27;
200 PADDING_AT_END.y = 28;
201 }
202
Michael Woeristerc7f45a92014-07-09 12:46:09203 zzz(); // #break
Michael Woerister55a8bd52014-04-24 09:35:48204}
205
206fn zzz() {()}