https://github.com/Michael137 updated https://github.com/llvm/llvm-project/pull/126053
>From 659a383f00011ecbf88163d15719eff9661742a7 Mon Sep 17 00:00:00 2001 From: Michael Buch <michaelbuc...@gmail.com> Date: Thu, 6 Feb 2025 11:44:50 +0000 Subject: [PATCH 1/3] [lldb][Breakpoint] Allow whitespace in breakpoint address expression Setting a breakpoint on `<symbol> + <offset>` used to work until `2c76e88e9eb284d17cf409851fb01f1d583bb22a`, where this regex was reworked. Now we only accept `<symbol>+ <offset>`. This patch fixes the regression by adding yet another `[[:space:]]*` component to the regex. One could probably simplify the regex (or even replace the regex by just calling the relevent `consumeXXX` APIs on `llvm::StringRef`). Though I left that for the future. rdar://130780342 --- lldb/source/Interpreter/OptionArgParser.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lldb/source/Interpreter/OptionArgParser.cpp b/lldb/source/Interpreter/OptionArgParser.cpp index 800f22b6169dc62..2d393a57452ee56 100644 --- a/lldb/source/Interpreter/OptionArgParser.cpp +++ b/lldb/source/Interpreter/OptionArgParser.cpp @@ -262,8 +262,10 @@ OptionArgParser::DoToAddress(const ExecutionContext *exe_ctx, llvm::StringRef s, // 3: The symbol/reg name if there is an offset // 4: +/- // 5: The offset value. + // clang-format off static RegularExpression g_symbol_plus_offset_regex( - "^(\\$[^ +-]+)|(([^ +-]+)([-\\+])[[:space:]]*(0x[0-9A-Fa-f]+|[0-9]+)[[:space:]]*)$"); + "^(\\$[^ +-]+)|(([^ +-]+)[[:space:]]*([-\\+])[[:space:]]*(0x[0-9A-Fa-f]+|[0-9]+)[[:space:]]*)$"); + // clang-format on llvm::SmallVector<llvm::StringRef, 4> matches; if (g_symbol_plus_offset_regex.Execute(sref, &matches)) { >From 32ad53a1c6a04a1f7c8edf328b325385364615ee Mon Sep 17 00:00:00 2001 From: Michael Buch <michaelbuc...@gmail.com> Date: Thu, 6 Feb 2025 14:10:06 +0000 Subject: [PATCH 2/3] fixup! add test --- lldb/test/Shell/Commands/command-breakpoint-by-addr.test | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 lldb/test/Shell/Commands/command-breakpoint-by-addr.test diff --git a/lldb/test/Shell/Commands/command-breakpoint-by-addr.test b/lldb/test/Shell/Commands/command-breakpoint-by-addr.test new file mode 100644 index 000000000000000..ff17ae6cb1a3db3 --- /dev/null +++ b/lldb/test/Shell/Commands/command-breakpoint-by-addr.test @@ -0,0 +1,3 @@ +# RUN: %clang_host -g -O0 %S/Inputs/main.c -o %t.out +# RUN: %lldb -b -o 'breakpoint set -a "main + 26"' %t.out | FileCheck %s --check-prefix CHECK +# CHECK: Breakpoint 1: address = >From b70126a667d6189d2b779fdd7b960d8c81fe8327 Mon Sep 17 00:00:00 2001 From: Michael Buch <michaelbuc...@gmail.com> Date: Thu, 6 Feb 2025 15:10:49 +0000 Subject: [PATCH 3/3] fixup! add more test cases --- lldb/test/Shell/Commands/command-breakpoint-by-addr.test | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lldb/test/Shell/Commands/command-breakpoint-by-addr.test b/lldb/test/Shell/Commands/command-breakpoint-by-addr.test index ff17ae6cb1a3db3..14bc7ebecc845e6 100644 --- a/lldb/test/Shell/Commands/command-breakpoint-by-addr.test +++ b/lldb/test/Shell/Commands/command-breakpoint-by-addr.test @@ -1,3 +1,12 @@ # RUN: %clang_host -g -O0 %S/Inputs/main.c -o %t.out +# RUN: %lldb -b -o 'breakpoint set -a "main+26"' %t.out | FileCheck %s --check-prefix CHECK +# RUN: %lldb -b -o 'breakpoint set -a "main+ 26"' %t.out | FileCheck %s --check-prefix CHECK +# RUN: %lldb -b -o 'breakpoint set -a "main +26"' %t.out | FileCheck %s --check-prefix CHECK +# RUN: %lldb -b -o 'breakpoint set -a "main + 26"' %t.out | FileCheck %s --check-prefix CHECK # RUN: %lldb -b -o 'breakpoint set -a "main + 26"' %t.out | FileCheck %s --check-prefix CHECK + # CHECK: Breakpoint 1: address = +# CHECK: Breakpoint 2: address = +# CHECK: Breakpoint 3: address = +# CHECK: Breakpoint 4: address = +# CHECK: Breakpoint 5: address = _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits