|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5, llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1 |
|
| #
8e776bb6 |
| 15-Mar-2022 |
Jonas Devlieghere <[email protected]> |
Re-land "[lldb] Synchronize output through the IOHandler"
Add synchronization to the IOHandler to prevent multiple threads from writing concurrently to the output or error stream.
A scenario where
Re-land "[lldb] Synchronize output through the IOHandler"
Add synchronization to the IOHandler to prevent multiple threads from writing concurrently to the output or error stream.
A scenario where this could happen is when a thread (the default event thread for example) is using the debugger's asynchronous stream. We would delegate this operation to the IOHandler which might be running on another thread. Until this patch there was nothing to synchronize the two at the IOHandler level.
Differential revision: https://reviews.llvm.org/D121500
show more ...
|
| #
9a5f04e0 |
| 15-Mar-2022 |
Jonas Devlieghere <[email protected]> |
Revert "[lldb] Synchronize output through the IOHandler"
This reverts commit 242c574dc03e4b90e992cc8d07436efc3954727f because it breaks the following tests on the bots:
- TestGuiExpandThreadsTree.
Revert "[lldb] Synchronize output through the IOHandler"
This reverts commit 242c574dc03e4b90e992cc8d07436efc3954727f because it breaks the following tests on the bots:
- TestGuiExpandThreadsTree.py - TestBreakpointCallbackCommandSource.py
show more ...
|
| #
242c574d |
| 15-Mar-2022 |
Jonas Devlieghere <[email protected]> |
[lldb] Synchronize output through the IOHandler
Add synchronization to the IOHandler to prevent multiple threads from writing concurrently to the output or error stream.
A scenario where this could
[lldb] Synchronize output through the IOHandler
Add synchronization to the IOHandler to prevent multiple threads from writing concurrently to the output or error stream.
A scenario where this could happen is when a thread (the default event thread for example) is using the debugger's asynchronous stream. We would delegate this operation to the IOHandler which might be running on another thread. Until this patch there was nothing to synchronize the two at the IOHandler level.
Differential revision: https://reviews.llvm.org/D121500
show more ...
|
|
Revision tags: llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3 |
|
| #
080635ef |
| 07-Mar-2022 |
Jonas Devlieghere <[email protected]> |
[lldb] Add a setting to change the autosuggestion ANSI escape codes
I'm a big fan of the autosuggestion feature but my terminal/color scheme doesn't display faint any differently than regular lldb o
[lldb] Add a setting to change the autosuggestion ANSI escape codes
I'm a big fan of the autosuggestion feature but my terminal/color scheme doesn't display faint any differently than regular lldb output, which makes the feature a little confusing. This patch add a setting to change the autosuggestion ANSI escape codes.
For example, to display the autosuggestion in italic, you can add this to your ~/.lldbinit
settings set show-autosuggestion-ansi-prefix ${ansi.italic} setting set show-autosuggestion-ansi-suffix ${ansi.normal}
Differential revision: https://reviews.llvm.org/D121064
show more ...
|
|
Revision tags: llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1, llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2, llvmorg-13.0.1-rc1 |
|
| #
fd9bc138 |
| 04-Oct-2021 |
Pavel Labath <[email protected]> |
[lldb] Fix a stray array access in Editline
This manifested itself as an asan failure in TestMultilineNavigation.py.
|
|
Revision tags: llvmorg-13.0.0, llvmorg-13.0.0-rc4, llvmorg-13.0.0-rc3 |
|
| #
4b2e38d9 |
| 13-Sep-2021 |
Raphael Isemann <[email protected]> |
[lldb][NFC] Cleanup EditlineHistory
|
| #
4f7fb13f |
| 31-Aug-2021 |
Raphael Isemann <[email protected]> |
[lldb] Don't save empty expressions in the multiline editor history
Right now running `expr` to start the multiline expression editor and then pressing enter causes an empty history empty to be crea
[lldb] Don't save empty expressions in the multiline editor history
Right now running `expr` to start the multiline expression editor and then pressing enter causes an empty history empty to be created for the multiline editor. That doesn't seem very useful for users as pressing the 'up' key will now also bring up these empty expressions.
I don't think there is ever a use case for recalling a completely empty expression from the history, so instead don't save those entries to the history file and make sure we never recall them when navigating over the expression history.
Note: This is actually a Swift downstream patch that got shipped with Apple's LLDB for many years. However, this recently started conflicting with upstream LLDB as D100048 added a test that made sure that empty expression entries don't crash LLDB. Apple's LLDB was never affected by this crash as it never saved empty expressions in the first place.
Reviewed By: augusto2112
Differential Revision: https://reviews.llvm.org/D108983
show more ...
|
| #
ffcf5711 |
| 30-Aug-2021 |
Hiroki <[email protected]> |
[LLDB] Fix 'std::out_of_range' crashing bug when file name completion using file path.
When I run a lldb command that uses filename completion, if I enter a string that is not only a filename but al
[LLDB] Fix 'std::out_of_range' crashing bug when file name completion using file path.
When I run a lldb command that uses filename completion, if I enter a string that is not only a filename but also a string with a non-file name string added, such as "./" that is relative path string , it will crash as soon as I press the [Tab] key. For example, debugging an executable file named "hello" that is compiled from a file named "hello.c" , and I’ll put a breakpoint on line 3 of hello.c.
``` $ lldb ./hello (lldb) breakpoint set --file hello.c --line 3 ```
This is not a problem, but if I set "--file ./hello." and then press [Tab] key to complete file name, lldb crashes.
``` $ lldb ./hello (lldb) breakpoint set --file ./hello.terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::substr: __pos (which is 8) > this->size() (which is 7) ```
The crash was caused because substr() (in lldb/source/Host/common/Editline.cpp) cut out string which size is user's input string from the completion string.
I modified the code that erase the user's intput string from current line and then add the completion string.
Differential Revision: https://reviews.llvm.org/D108817
show more ...
|
|
Revision tags: llvmorg-13.0.0-rc2 |
|
| #
55fd6f29 |
| 05-Aug-2021 |
Neal Sidhwaney <[email protected]> |
Revert "D106035: Remove conditional compilation for WCHAR support in libedit"
This reverts commit 7529f0e3e1427fea93a6a66a2aed5394710e5fb5.
|
|
Revision tags: llvmorg-13.0.0-rc1, llvmorg-14-init, llvmorg-12.0.1, llvmorg-12.0.1-rc4, llvmorg-12.0.1-rc3, llvmorg-12.0.1-rc2, llvmorg-12.0.1-rc1 |
|
| #
7529f0e3 |
| 20-May-2021 |
Neal Sidhwaney <[email protected]> |
D106035: Remove conditional compilation for WCHAR support in libedit
This change moves to using narrow character types and libedit APIs in Editline, because those are the same types that the rest of
D106035: Remove conditional compilation for WCHAR support in libedit
This change moves to using narrow character types and libedit APIs in Editline, because those are the same types that the rest of LLVM/LLDB uses, and it's generally considered better practice to use UTF-8 encoded in char than it is to use wider characters. However, for character input, the change leaves in using a wchar to enable input of multi-byte characters.
Differential Revision: https://reviews.llvm.org/D106035
show more ...
|
| #
76e47d48 |
| 26-May-2021 |
Raphael Isemann <[email protected]> |
[lldb][NFC] Use C++ versions of the deprecated C standard library headers
The C headers are deprecated so as requested in D102845, this is replacing them all with their (not deprecated) C++ equivale
[lldb][NFC] Use C++ versions of the deprecated C standard library headers
The C headers are deprecated so as requested in D102845, this is replacing them all with their (not deprecated) C++ equivalent.
Reviewed By: shafik
Differential Revision: https://reviews.llvm.org/D103084
show more ...
|
| #
fd89af68 |
| 30-Apr-2021 |
Neal (nealsid) <[email protected]> |
Wrap edit line configuration calls into helper functions
Currently we call el_set directly to configure the editor in the libedit wrapper. There are some cases in which this causes extra casting, b
Wrap edit line configuration calls into helper functions
Currently we call el_set directly to configure the editor in the libedit wrapper. There are some cases in which this causes extra casting, but we pass captureless lambdas as function pointers, which should work out of the box. Since el_set takes varargs, if the cast is incorrect or if the cast is not present, it causes a run time failure rather than compile error. This change makes it so a few different types of configuration is done inside a helper function to provide type safety and eliminate that casting. I didn't do all edit line configuration because I'm not sure how important it was in other cases and it might require something more general keep up with libedit's signature. I'm open to suggestions, though.
Reviewed By: teemperor, JDevlieghere
Differential Revision: https://reviews.llvm.org/D101250
show more ...
|
| #
f49a4440 |
| 07-Apr-2021 |
Jordan Rupprecht <[email protected]> |
[lldb][Editline] Fix crash when navigating through empty command history.
An empty history entry can happen by entering the expression evaluator an immediately hitting enter:
``` $ lldb (lldb) e En
[lldb][Editline] Fix crash when navigating through empty command history.
An empty history entry can happen by entering the expression evaluator an immediately hitting enter:
``` $ lldb (lldb) e Enter expressions, then terminate with an empty line to evaluate: 1: <hit enter> ```
The next time the user enters the expression evaluator, if they hit the up arrow to load the previous expression, lldb crashes. This patch treats empty history sessions as a single expression of zero length, instead of an empty list of expressions.
Fixes http://llvm.org/PR49845.
Differential Revision: https://reviews.llvm.org/D100048
show more ...
|
|
Revision tags: llvmorg-12.0.0, llvmorg-12.0.0-rc5, llvmorg-12.0.0-rc4, llvmorg-12.0.0-rc3 |
|
| #
5826aa48 |
| 02-Mar-2021 |
Neal (nealsid) <[email protected]> |
Migrate to llvm::unique_function instead of static member functions for callbacks
A few cleanups suggested in another patch review's comments:
1. Use llvm:unique_function for storing & invoking cal
Migrate to llvm::unique_function instead of static member functions for callbacks
A few cleanups suggested in another patch review's comments:
1. Use llvm:unique_function for storing & invoking callbacks from Editline to IOHandler 2. Change return type of one of the callback setters from bool to void, since it's return value was never used 3. Moved the callback setters inline & made them nonstatic, since that's more consistent with other setter definitions 4. Removed the baton parameter since we no longer need it anymore
Differential revision: https://reviews.llvm.org/D50299
show more ...
|
|
Revision tags: llvmorg-12.0.0-rc2, llvmorg-11.1.0, llvmorg-11.1.0-rc3, llvmorg-12.0.0-rc1, llvmorg-13-init, llvmorg-11.1.0-rc2, llvmorg-11.1.0-rc1, llvmorg-11.0.1, llvmorg-11.0.1-rc2, llvmorg-11.0.1-rc1, llvmorg-11.0.0, llvmorg-11.0.0-rc6, llvmorg-11.0.0-rc5, llvmorg-11.0.0-rc4, llvmorg-11.0.0-rc3 |
|
| #
921c1b7d |
| 20-Aug-2020 |
Jonas Devlieghere <[email protected]> |
[lldb] Provide GetHomeDirectory wrapper in Host::FileSystem (NFC)
Provider a wrapper around llvm::sys::path::home_directory in the FileSystem class. This will make it possible for the reproducers to
[lldb] Provide GetHomeDirectory wrapper in Host::FileSystem (NFC)
Provider a wrapper around llvm::sys::path::home_directory in the FileSystem class. This will make it possible for the reproducers to intercept the call in a central place.
show more ...
|
|
Revision tags: llvmorg-11.0.0-rc2 |
|
| #
de9e8502 |
| 12-Aug-2020 |
Shu Anzai <[email protected]> |
[lldb] Display autosuggestion part in gray if there is one possible suggestion
This is relanding D81001. The patch originally failed as on newer editline versions it seems CC_REFRESH will move the c
[lldb] Display autosuggestion part in gray if there is one possible suggestion
This is relanding D81001. The patch originally failed as on newer editline versions it seems CC_REFRESH will move the cursor to the start of the line via \r and then back to the original position. On older editline versions like the one used by default on macOS, CC_REFRESH doesn't move the cursor at all. As the patch changed the way we handle tab completion (previously we did REDISPLAY but now we're doing CC_REFRESH), this caused a few completion tests to receive this unexpected cursor movement in the output stream. This patch updates those tests to also accept output that contains the specific cursor movement commands (\r and then \x1b[XC). lldbpexpect.py received an utility method for generating the cursor movement escape sequence.
Original summary:
I implemented autosuggestion if there is one possible suggestion. I set the keybinds for every character. When a character is typed, Editline::TypedCharacter is called. Then, autosuggestion part is displayed in gray, and you can actually input by typing C-k. Editline::Autosuggest is a function for finding completion, and it is like Editline::TabCommand now, but I will add more features to it.
Testing does not work well in my environment, so I can't confirm that it goes well, sorry. I am dealing with it now.
Reviewed By: teemperor, JDevlieghere, #lldb
Differential Revision: https://reviews.llvm.org/D81001
show more ...
|
| #
bbe3c479 |
| 14-Aug-2020 |
Raphael Isemann <[email protected]> |
[lldb] Fix a crash when tab-completion an empty line in a function with only one local variable
When LLDB sees only one possible completion for an input, it will add a trailing space to the completi
[lldb] Fix a crash when tab-completion an empty line in a function with only one local variable
When LLDB sees only one possible completion for an input, it will add a trailing space to the completion to signal that to the user. If the current argument is quoted, that also means LLDB needs to add the trailing quote to finish the current argument first.
In case the user is in a function with only one local variable and is currently editing an empty line in the multiline expression editor, then we are in the unique situation where we can have a unique completion for an empty input line. (In a normal LLDB session this would never occur as empty input would just list all the possible commands).
In this special situation our check if the current argument needs to receive a trailing quote will crash LLDB as there is no current argument and the completion code just unconditionally tries to access the current argument. This just adds the missing check if we even have a current argument before we check if we need to add a terminating quote character.
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D85903
show more ...
|
| #
cff880b0 |
| 12-Aug-2020 |
Raphael Isemann <[email protected]> |
Revert "[lldb] Display autosuggestion part in gray if there is one possible suggestion"
This reverts commit 246afe0cd17fce935a01171f3cca548e02523e5c. This broke the following tests on Linux it seems
Revert "[lldb] Display autosuggestion part in gray if there is one possible suggestion"
This reverts commit 246afe0cd17fce935a01171f3cca548e02523e5c. This broke the following tests on Linux it seems: lldb-api :: commands/expression/multiline-completion/TestMultilineCompletion.py lldb-api :: iohandler/completion/TestIOHandlerCompletion.py
show more ...
|
| #
246afe0c |
| 12-Aug-2020 |
Shu Anzai <[email protected]> |
[lldb] Display autosuggestion part in gray if there is one possible suggestion
I implemented autosuggestion if there is one possible suggestion. I set the keybinds for every character. When a charac
[lldb] Display autosuggestion part in gray if there is one possible suggestion
I implemented autosuggestion if there is one possible suggestion. I set the keybinds for every character. When a character is typed, Editline::TypedCharacter is called. Then, autosuggestion part is displayed in gray, and you can actually input by typing C-k. Editline::Autosuggest is a function for finding completion, and it is like Editline::TabCommand now, but I will add more features to it.
Testing does not work well in my environment, so I can't confirm that it goes well, sorry. I am dealing with it now.
Reviewed By: teemperor, JDevlieghere, #lldb
Differential Revision: https://reviews.llvm.org/D81001
show more ...
|
| #
5608f28f |
| 28-Jul-2020 |
Shu Anzai <[email protected]> |
[lldb] Change the definition of ANSI_UNFAINT
Change the definition of ANSI_UNFAINT in Editline.cpp.
Differential revision: https://reviews.llvm.org/D84695
|
|
Revision tags: llvmorg-11.0.0-rc1, llvmorg-12-init, llvmorg-10.0.1, llvmorg-10.0.1-rc4, llvmorg-10.0.1-rc3, llvmorg-10.0.1-rc2 |
|
| #
e13fca4f |
| 21-Jun-2020 |
Jonas Devlieghere <[email protected]> |
[lldb] Remove unused <iostream> includes (NFC)
|
|
Revision tags: llvmorg-10.0.1-rc1 |
|
| #
d9166ad2 |
| 08-May-2020 |
Fred Riss <[email protected]> |
[lldb/Driver] Support terminal resizing
Summary: The comment in the Editine.h header made it sound like editline was just unable to handle terminal resizing. We were not ever telling editline that t
[lldb/Driver] Support terminal resizing
Summary: The comment in the Editine.h header made it sound like editline was just unable to handle terminal resizing. We were not ever telling editline that the terminal had changed size, which might explain why it wasn't working.
This patch threads a `TerminalSizeChanged()` callback through the IOHandler and invokes it from the SIGWINCH handler in the driver. Our `Editline` class already had a `TerminalSizeChanged()` method which was invoked only when editline was configured.
This patch also changes `Editline` to not apply the changes right away in `TerminalSizeChanged()`, but instead defer that to the next character read. During my testing, it happened once that the signal was received while our `ConnectionFileDescriptor::Read` was allocating memory. As `el_resize` seems to allocate memory too, this crashed.
Reviewers: labath, teemperor
Subscribers: lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D79654
show more ...
|
| #
e9264b74 |
| 06-Apr-2020 |
Kazuaki Ishizaki <[email protected]> |
[lldb] NFC: Fix trivial typo in comments, documents, and messages
Differential Revision: https://reviews.llvm.org/D77460
|
|
Revision tags: llvmorg-10.0.0, llvmorg-10.0.0-rc6, llvmorg-10.0.0-rc5, llvmorg-10.0.0-rc4 |
|
| #
46796916 |
| 06-Mar-2020 |
Shu Anzai <[email protected]> |
[lldb/Core] Minor code cleanup in Editline.cpp (NFC)
Simplify the code a bit.
Differential revision: https://reviews.llvm.org/D75294
|
|
Revision tags: llvmorg-10.0.0-rc3 |
|
| #
4f2cccc5 |
| 14-Feb-2020 |
Jonas Devlieghere <[email protected]> |
[lldb/Editline] Fix mistake in HistoryOperation mapping
In 0e9b0b6d11e882efec8505d97c4b65e1562e6715 I introduced the HistoryOperation enum to navigate the history. While this fixed the behavior of H
[lldb/Editline] Fix mistake in HistoryOperation mapping
In 0e9b0b6d11e882efec8505d97c4b65e1562e6715 I introduced the HistoryOperation enum to navigate the history. While this fixed the behavior of HistoryOperation::Older and HistoryOperation::Newer, it confused the mapping for HistoryOperation::Oldest and HistoryOperation::Newest.
I tried to write a PExpect test to make sure this doesn't regress, but I'm unable to prime the history in such a way that it recalls a known element. I suspect this is an LLDB bug, but the most recent entry doesn't get update with entries from the current session. I considered spoofing the home directory but that needs to happen before libLLDB is loaded and you'll need to account for the widechar support. If anyone has another suggestion I'd love to hear it.
show more ...
|