Summary: The test machinery translates each continuous block of "//%" comments into a single breakpoint. If there's no code between the blocks the breakpoints will end up at the same location in the program. When the process stops at a breakpoint lldb correctly reports all breakpoint IDs, but the test machinery only looks at the first one. This results in a very dangerous situation as it means some checks can be silently stopped. This patch fixes that by making the test machinery iterate through all breakpoints at a given location and execute all commands. Reviewers: vsk, JDevlieghere Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D79563
23 lines
723 B
C
23 lines
723 B
C
// Make sure we correctly handle $ in variable names.
|
|
|
|
int main() {
|
|
// Some variables that might conflict with our variables below.
|
|
int __lldb_expr_result = 2;
|
|
int $$foo = 1;
|
|
int R0 = 2;
|
|
|
|
// Some variables with dollar signs that should work (and shadow
|
|
// any built-in LLDB variables).
|
|
int $__lldb_expr_result = 11;
|
|
int $foo = 12;
|
|
int $R0 = 13;
|
|
int $0 = 14;
|
|
|
|
//%self.expect("expr $__lldb_expr_result", substrs=['(int) $0 = 11'])
|
|
//%self.expect("expr $foo", substrs=['(int)', ' = 12'])
|
|
//%self.expect("expr $R0", substrs=['(int)', ' = 13'])
|
|
//%self.expect("expr int $foo = 123", error=True, substrs=["declaration conflicts"])
|
|
//%self.expect("expr $0", substrs=['(int)', ' = 11'])
|
|
return 0;
|
|
}
|