The issue with these test failures is that the dSYM was not being found by lldb, which is why setting breakpoints was failing and lldb quit without performing any steps. This change copies the dSYM to the same temp directory that the executable is copied to.
35 lines
840 B
C
35 lines
840 B
C
// REQUIRES: lldb
|
|
// UNSUPPORTED: system-windows
|
|
// RUN: %clang -std=gnu11 -O2 -glldb %s -o %t
|
|
// RUN: %dexter --fail-lt 1.0 -w --debugger lldb --binary %t -- %s
|
|
|
|
//// Check that we give good locations to a variable ('local') which is escaped
|
|
//// down some control paths and not others. This example is handled well currently.
|
|
|
|
int g;
|
|
__attribute__((__noinline__))
|
|
void leak(int *ptr) {
|
|
g = *ptr;
|
|
*ptr = 2;
|
|
}
|
|
|
|
__attribute__((__noinline__))
|
|
int fun(int cond) {
|
|
int local = 0; // DexLabel('s1')
|
|
if (cond)
|
|
leak(&local);
|
|
else
|
|
local = 1;
|
|
return local; // DexLabel('s2')
|
|
}
|
|
|
|
int main() {
|
|
int a = fun(1);
|
|
int b = fun(0);
|
|
return a + b;
|
|
}
|
|
|
|
//// fun(1) fun(0)
|
|
// DexExpectWatchValue('local', '0', '0', on_line=ref('s1'))
|
|
// DexExpectWatchValue('local', '2', '1', on_line=ref('s2'))
|