1*99451b44SJordan Rupprecht // This is a regression test that checks whether lldb can inspect the variables 2*99451b44SJordan Rupprecht // in this program without triggering an ASan exception. 3*99451b44SJordan Rupprecht use(int x)4*99451b44SJordan Rupprecht__attribute__((noinline, optnone)) int use(int x) { return x; } 5*99451b44SJordan Rupprecht 6*99451b44SJordan Rupprecht volatile int sink; 7*99451b44SJordan Rupprecht 8*99451b44SJordan Rupprecht struct S1 { 9*99451b44SJordan Rupprecht int f1; 10*99451b44SJordan Rupprecht int *f2; 11*99451b44SJordan Rupprecht }; 12*99451b44SJordan Rupprecht 13*99451b44SJordan Rupprecht struct S2 { 14*99451b44SJordan Rupprecht char a, b; 15*99451b44SJordan Rupprecht int pad; S2S216*99451b44SJordan Rupprecht S2(int x) { 17*99451b44SJordan Rupprecht a = x & 0xff; 18*99451b44SJordan Rupprecht b = x & 0xff00; 19*99451b44SJordan Rupprecht } 20*99451b44SJordan Rupprecht }; 21*99451b44SJordan Rupprecht main()22*99451b44SJordan Rupprechtint main() { 23*99451b44SJordan Rupprecht S1 v1; 24*99451b44SJordan Rupprecht v1.f1 = sink; 25*99451b44SJordan Rupprecht v1.f2 = nullptr; 26*99451b44SJordan Rupprecht sink++; //% self.expect("frame variable v1", substrs=["S1"]) 27*99451b44SJordan Rupprecht S2 v2(v1.f1); 28*99451b44SJordan Rupprecht sink += use(v2.a); //% self.expect("frame variable v2", substrs=["S2"]) 29*99451b44SJordan Rupprecht sink += use(v2.pad); //% self.expect("frame variable v2", substrs=["S2"]) 30*99451b44SJordan Rupprecht return 0; 31*99451b44SJordan Rupprecht } 32