| // This is a regression test that checks whether lldb can inspect the variables | |
| // in this program without triggering an ASan exception. | |
| __attribute__((noinline, optnone)) int use(int x) { return x; } | |
| volatile int sink; | |
| struct S1 { | |
| int f1; | |
| int *f2; | |
| }; | |
| struct S2 { | |
| char a = 0; | |
| char b = 0; | |
| int pad = 0; | |
| S2(int x) { | |
| a = x & 0xff; | |
| b = x & 0xff00; | |
| } | |
| }; | |
| int main() { | |
| S1 v1; | |
| v1.f1 = sink; | |
| v1.f2 = nullptr; | |
| sink++; //% self.expect("frame variable v1", substrs=["S1"]) | |
| S2 v2(v1.f1); | |
| sink += use(v2.a); //% self.expect("frame variable v2", substrs=["S2"]) | |
| sink += use(v2.pad); //% self.expect("frame variable v2", substrs=["S2"]) | |
| return 0; | |
| } |