From bdf7487127e2fb4a1d0b7c869ef451240257560f Mon Sep 17 00:00:00 2001 From: Anthony Tran Date: Tue, 29 Jul 2025 14:06:48 -0700 Subject: [PATCH 1/3] Add test for UBSan trap frame recognizer --- .../Recognizer/Inputs/ubsan_add_overflow.cpp | 8 ++++++++ .../Shell/Recognizer/ubsan_add_overflow.test | 17 +++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 lldb/test/Shell/Recognizer/Inputs/ubsan_add_overflow.cpp create mode 100644 lldb/test/Shell/Recognizer/ubsan_add_overflow.test diff --git a/lldb/test/Shell/Recognizer/Inputs/ubsan_add_overflow.cpp b/lldb/test/Shell/Recognizer/Inputs/ubsan_add_overflow.cpp new file mode 100644 index 0000000000000..0258ff296ea63 --- /dev/null +++ b/lldb/test/Shell/Recognizer/Inputs/ubsan_add_overflow.cpp @@ -0,0 +1,8 @@ +#include + +int main() { + volatile int a = INT_MAX; + volatile int b = 1; + volatile int c = a + b; + return c; +} \ No newline at end of file diff --git a/lldb/test/Shell/Recognizer/ubsan_add_overflow.test b/lldb/test/Shell/Recognizer/ubsan_add_overflow.test new file mode 100644 index 0000000000000..f9312b5bf15bb --- /dev/null +++ b/lldb/test/Shell/Recognizer/ubsan_add_overflow.test @@ -0,0 +1,17 @@ +# REQUIRES: clang + +# RUN: %clang_host -g -O0 %S/Inputs/ubsan_add_overflow.cpp -o %t.out \ +# RUN: -fsanitize=signed-integer-overflow -fsanitize-trap=signed-integer-overflow + +# RUN: %lldb -b -s %s %t.out | FileCheck %s + +run +# CHECK: thread #{{.*}} stop reason = Undefined Behavior Sanitizer: Integer addition overflowed + +frame info +# CHECK: frame #{{.*}}`main at ubsan_add_overflow.cpp + +frame recognizer info 0 +# CHECK: frame 0 is recognized by Verbose Trap StackFrame Recognizer + +quit \ No newline at end of file From 3623b0153945c2fa7d403e45053a2118199e6bd2 Mon Sep 17 00:00:00 2001 From: Anthony Tran Date: Wed, 30 Jul 2025 15:10:12 -0700 Subject: [PATCH 2/3] Address all comments --- .../Shell/Recognizer/Inputs/ubsan_add_overflow.c | 3 +++ .../Shell/Recognizer/Inputs/ubsan_add_overflow.cpp | 8 -------- lldb/test/Shell/Recognizer/ubsan_add_overflow.test | 12 ++++++------ 3 files changed, 9 insertions(+), 14 deletions(-) create mode 100644 lldb/test/Shell/Recognizer/Inputs/ubsan_add_overflow.c delete mode 100644 lldb/test/Shell/Recognizer/Inputs/ubsan_add_overflow.cpp diff --git a/lldb/test/Shell/Recognizer/Inputs/ubsan_add_overflow.c b/lldb/test/Shell/Recognizer/Inputs/ubsan_add_overflow.c new file mode 100644 index 0000000000000..9f12c321bf409 --- /dev/null +++ b/lldb/test/Shell/Recognizer/Inputs/ubsan_add_overflow.c @@ -0,0 +1,3 @@ +#include + +int main() { return INT_MAX + 1; } diff --git a/lldb/test/Shell/Recognizer/Inputs/ubsan_add_overflow.cpp b/lldb/test/Shell/Recognizer/Inputs/ubsan_add_overflow.cpp deleted file mode 100644 index 0258ff296ea63..0000000000000 --- a/lldb/test/Shell/Recognizer/Inputs/ubsan_add_overflow.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include - -int main() { - volatile int a = INT_MAX; - volatile int b = 1; - volatile int c = a + b; - return c; -} \ No newline at end of file diff --git a/lldb/test/Shell/Recognizer/ubsan_add_overflow.test b/lldb/test/Shell/Recognizer/ubsan_add_overflow.test index f9312b5bf15bb..325e1a26dcf2a 100644 --- a/lldb/test/Shell/Recognizer/ubsan_add_overflow.test +++ b/lldb/test/Shell/Recognizer/ubsan_add_overflow.test @@ -1,15 +1,15 @@ -# REQUIRES: clang - -# RUN: %clang_host -g -O0 %S/Inputs/ubsan_add_overflow.cpp -o %t.out \ -# RUN: -fsanitize=signed-integer-overflow -fsanitize-trap=signed-integer-overflow +# RUN: %clang_host -g -O0 %S/Inputs/ubsan_add_overflow.c -o %t.out \ +# RUN: -fsanitize=signed-integer-overflow -fsanitize-trap=signed-integer-overflow # RUN: %lldb -b -s %s %t.out | FileCheck %s run # CHECK: thread #{{.*}} stop reason = Undefined Behavior Sanitizer: Integer addition overflowed +# CHECK-NEXT: frame #1: {{.*}}`main at ubsan_add_overflow.c -frame info -# CHECK: frame #{{.*}}`main at ubsan_add_overflow.cpp +bt +# CHECK: frame #0: {{.*}}`__clang_trap_msg$Undefined Behavior Sanitizer$Integer addition overflowed{{.*}} +# CHECK: frame #1: {{.*}}`main at ubsan_add_overflow.c frame recognizer info 0 # CHECK: frame 0 is recognized by Verbose Trap StackFrame Recognizer From f2f1b62c8ddea4b6297d7fef411e2508f53824e0 Mon Sep 17 00:00:00 2001 From: Anthony Tran Date: Wed, 30 Jul 2025 15:24:40 -0700 Subject: [PATCH 3/3] Re-add frame info line --- lldb/test/Shell/Recognizer/ubsan_add_overflow.test | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lldb/test/Shell/Recognizer/ubsan_add_overflow.test b/lldb/test/Shell/Recognizer/ubsan_add_overflow.test index 325e1a26dcf2a..9dac039b27111 100644 --- a/lldb/test/Shell/Recognizer/ubsan_add_overflow.test +++ b/lldb/test/Shell/Recognizer/ubsan_add_overflow.test @@ -11,6 +11,9 @@ bt # CHECK: frame #0: {{.*}}`__clang_trap_msg$Undefined Behavior Sanitizer$Integer addition overflowed{{.*}} # CHECK: frame #1: {{.*}}`main at ubsan_add_overflow.c +frame info +# CHECK: frame #{{.*}}`main at ubsan_add_overflow.c + frame recognizer info 0 # CHECK: frame 0 is recognized by Verbose Trap StackFrame Recognizer