rust/tests/debuginfo/simple-struct.rs
Martin Nordholts 5b57d02e9f compiletest: Use //@ prefixes also for debuginfo test directives
So that when we later add support for revisions we can use the same
syntax for revisions as elsewhere.

This also prevents people from making typos for commands since
`src/tools/compiletest/src/directives/directive_names.rs` will catch such
typos now.

Note that we one FIXME for a non-trivial change for later:
```
// FIXME(148097): Change `// cdb-checksimple_closure` to `//@ cdb-check:simple_closure`
```
2025-11-25 06:13:45 +01:00

194 lines
4.9 KiB
Rust

//@ compile-flags: -g -Zmir-enable-passes=-CheckAlignment
//@ disable-gdb-pretty-printers
//@ ignore-backends: gcc
// === GDB TESTS ===================================================================================
//@ gdb-command:print simple_struct::NO_PADDING_16
//@ gdb-check:$1 = simple_struct::NoPadding16 {x: 1000, y: -1001}
//@ gdb-command:print simple_struct::NO_PADDING_32
//@ gdb-check:$2 = simple_struct::NoPadding32 {x: 1, y: 2, z: 3}
//@ gdb-command:print simple_struct::NO_PADDING_64
//@ gdb-check:$3 = simple_struct::NoPadding64 {x: 4, y: 5, z: 6}
//@ gdb-command:print simple_struct::NO_PADDING_163264
//@ gdb-check:$4 = simple_struct::NoPadding163264 {a: 7, b: 8, c: 9, d: 10}
//@ gdb-command:print simple_struct::INTERNAL_PADDING
//@ gdb-check:$5 = simple_struct::InternalPadding {x: 11, y: 12}
//@ gdb-command:print simple_struct::PADDING_AT_END
//@ gdb-check:$6 = simple_struct::PaddingAtEnd {x: 13, y: 14}
//@ gdb-command:run
//@ gdb-command:print no_padding16
//@ gdb-check:$7 = simple_struct::NoPadding16 {x: 10000, y: -10001}
//@ gdb-command:print no_padding32
//@ gdb-check:$8 = simple_struct::NoPadding32 {x: -10002, y: -10003.5, z: 10004}
//@ gdb-command:print no_padding64
//@ gdb-check:$9 = simple_struct::NoPadding64 {x: -10005.5, y: 10006, z: 10007}
//@ gdb-command:print no_padding163264
//@ gdb-check:$10 = simple_struct::NoPadding163264 {a: -10008, b: 10009, c: 10010, d: 10011}
//@ gdb-command:print internal_padding
//@ gdb-check:$11 = simple_struct::InternalPadding {x: 10012, y: -10013}
//@ gdb-command:print padding_at_end
//@ gdb-check:$12 = simple_struct::PaddingAtEnd {x: -10014, y: 10015}
//@ gdb-command:print simple_struct::NO_PADDING_16
//@ gdb-check:$13 = simple_struct::NoPadding16 {x: 100, y: -101}
//@ gdb-command:print simple_struct::NO_PADDING_32
//@ gdb-check:$14 = simple_struct::NoPadding32 {x: -15, y: -16, z: 17}
//@ gdb-command:print simple_struct::NO_PADDING_64
//@ gdb-check:$15 = simple_struct::NoPadding64 {x: -18, y: 19, z: 20}
//@ gdb-command:print simple_struct::NO_PADDING_163264
//@ gdb-check:$16 = simple_struct::NoPadding163264 {a: -21, b: 22, c: 23, d: 24}
//@ gdb-command:print simple_struct::INTERNAL_PADDING
//@ gdb-check:$17 = simple_struct::InternalPadding {x: 25, y: -26}
//@ gdb-command:print simple_struct::PADDING_AT_END
//@ gdb-check:$18 = simple_struct::PaddingAtEnd {x: -27, y: 28}
//@ gdb-command:continue
// === LLDB TESTS ==================================================================================
//@ lldb-command:run
//@ lldb-command:v no_padding16
//@ lldb-check:[...] { x = 10000 y = -10001 }
//@ lldb-command:v no_padding32
//@ lldb-check:[...] { x = -10002 y = -10003.5 z = 10004 }
//@ lldb-command:v no_padding64
//@ lldb-check:[...] { x = -10005.5 y = 10006 z = 10007 }
//@ lldb-command:v no_padding163264
//@ lldb-check:[...] { a = -10008 b = 10009 c = 10010 d = 10011 }
//@ lldb-command:v internal_padding
//@ lldb-check:[...] { x = 10012 y = -10013 }
//@ lldb-command:v padding_at_end
//@ lldb-check:[...] { x = -10014 y = 10015 }
#![allow(unused_variables)]
#![allow(dead_code)]
struct NoPadding16 {
x: u16,
y: i16
}
struct NoPadding32 {
x: i32,
y: f32,
z: u32
}
struct NoPadding64 {
x: f64,
y: i64,
z: u64
}
struct NoPadding163264 {
a: i16,
b: u16,
c: i32,
d: u64
}
struct InternalPadding {
x: u16,
y: i64
}
struct PaddingAtEnd {
x: i64,
y: u16
}
static mut NO_PADDING_16: NoPadding16 = NoPadding16 {
x: 1000,
y: -1001
};
static mut NO_PADDING_32: NoPadding32 = NoPadding32 {
x: 1,
y: 2.0,
z: 3
};
static mut NO_PADDING_64: NoPadding64 = NoPadding64 {
x: 4.0,
y: 5,
z: 6
};
static mut NO_PADDING_163264: NoPadding163264 = NoPadding163264 {
a: 7,
b: 8,
c: 9,
d: 10
};
static mut INTERNAL_PADDING: InternalPadding = InternalPadding {
x: 11,
y: 12
};
static mut PADDING_AT_END: PaddingAtEnd = PaddingAtEnd {
x: 13,
y: 14
};
fn main() {
let no_padding16 = NoPadding16 { x: 10000, y: -10001 };
let no_padding32 = NoPadding32 { x: -10002, y: -10003.5, z: 10004 };
let no_padding64 = NoPadding64 { x: -10005.5, y: 10006, z: 10007 };
let no_padding163264 = NoPadding163264 { a: -10008, b: 10009, c: 10010, d: 10011 };
let internal_padding = InternalPadding { x: 10012, y: -10013 };
let padding_at_end = PaddingAtEnd { x: -10014, y: 10015 };
unsafe {
NO_PADDING_16.x = 100;
NO_PADDING_16.y = -101;
NO_PADDING_32.x = -15;
NO_PADDING_32.y = -16.0;
NO_PADDING_32.z = 17;
NO_PADDING_64.x = -18.0;
NO_PADDING_64.y = 19;
NO_PADDING_64.z = 20;
NO_PADDING_163264.a = -21;
NO_PADDING_163264.b = 22;
NO_PADDING_163264.c = 23;
NO_PADDING_163264.d = 24;
INTERNAL_PADDING.x = 25;
INTERNAL_PADDING.y = -26;
PADDING_AT_END.x = -27;
PADDING_AT_END.y = 28;
}
zzz(); // #break
}
fn zzz() {()}