| #
b26e1efc |
| 17-Aug-2021 |
Omar Emara <[email protected]> |
[LLDB][GUI] Add Breakpoints window
This patch adds a breakpoints window that lists all breakpoints and breakpoints locations. The window is implemented as a tree, where the first level is the breakp
[LLDB][GUI] Add Breakpoints window
This patch adds a breakpoints window that lists all breakpoints and breakpoints locations. The window is implemented as a tree, where the first level is the breakpoints and the second level is breakpoints locations.
The tree delegate was hardcoded to only draw when there is a process, which is not necessary for breakpoints, so the relevant logic was abstracted in the TreeDelegateShouldDraw method.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D107386
show more ...
|
| #
79e950a2 |
| 17-Aug-2021 |
Omar Emara <[email protected]> |
[LLDB][GUI] Refactor form drawing using subsurfaces
This patch adds a new method SubSurface to the Surface class. The method returns another surface that is a subset of this surface. This is importa
[LLDB][GUI] Refactor form drawing using subsurfaces
This patch adds a new method SubSurface to the Surface class. The method returns another surface that is a subset of this surface. This is important to further abstract away drawing from the ncurses objects. For instance, fields could previously be drawn on subpads only but can now be drawn on any surface. This is needed to create the file search dialogs and similar functionalities.
There is an opportunity to refactor window drawing in general using surfaces, but we shall consider this separately later.
Differential Revision: https://reviews.llvm.org/D107761
show more ...
|
| #
4d3d182c |
| 06-Aug-2021 |
Jason Molenda <[email protected]> |
Revert "[LLDB][GUI] Refactor form drawing using subsurfaces"
Temporarily revert this patch to unbreak the bots/builds until we can understand what was intended; is_pad() call isn't defined.
This re
Revert "[LLDB][GUI] Refactor form drawing using subsurfaces"
Temporarily revert this patch to unbreak the bots/builds until we can understand what was intended; is_pad() call isn't defined.
This reverts commit 2b89f40a411cb9717232df61371b24d73ae84cb8.
show more ...
|
| #
2b89f40a |
| 05-Aug-2021 |
Omar Emara <[email protected]> |
[LLDB][GUI] Refactor form drawing using subsurfaces
This patch adds a new method SubSurface to the Surface class. The method returns another surface that is a subset of this surface. This is importa
[LLDB][GUI] Refactor form drawing using subsurfaces
This patch adds a new method SubSurface to the Surface class. The method returns another surface that is a subset of this surface. This is important to further abstract away drawing from the ncurses objects. For instance, fields could previously be drawn on subpads only but can now be drawn on any surface. This is needed to create the file search dialogs and similar functionalities.
There is an opportunity to refactor window drawing in general using surfaces, but we shall consider this separately later.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D107182
show more ...
|
| #
a94fbb25 |
| 02-Aug-2021 |
Muhammad Omair Javaid <[email protected]> |
Revert "Revert "[LLDB][GUI] Expand selected thread tree item by default""
This reverts commit fd18f0e84cca023df6cb19e88c07c0e2059f659b.
I reverted this change to see its effect on failing GUI tests
Revert "Revert "[LLDB][GUI] Expand selected thread tree item by default""
This reverts commit fd18f0e84cca023df6cb19e88c07c0e2059f659b.
I reverted this change to see its effect on failing GUI tests on LLDB Arm/AArch64 Linux buildbots. I could not find any evidence against this particular change so reverting it back.
Differential Revision: https://reviews.llvm.org/D100243
show more ...
|
| #
fd18f0e8 |
| 29-Jul-2021 |
Muhammad Omair Javaid <[email protected]> |
Revert "[LLDB][GUI] Expand selected thread tree item by default"
This reverts commit fed25ddc1c3de59aa1de27e95b349f86896ccb79.
There has been sporadic failures in LLDB AArch64/Arm 32 buildbots sinc
Revert "[LLDB][GUI] Expand selected thread tree item by default"
This reverts commit fed25ddc1c3de59aa1de27e95b349f86896ccb79.
There has been sporadic failures in LLDB AArch64/Arm 32 buildbots since this commit. I am temporarily reverting it see if it fixes the issue.
Differential Revision: https://reviews.llvm.org/D100243
show more ...
|
| #
62bd3315 |
| 29-Jul-2021 |
Omar Emara <[email protected]> |
[LLDB][GUI] Add Environment Variable Field
This patch adds an environment variable field. This is usually used as the basic type of a List field. This is needed to create the process launch form.
R
[LLDB][GUI] Add Environment Variable Field
This patch adds an environment variable field. This is usually used as the basic type of a List field. This is needed to create the process launch form.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D106999
show more ...
|
| #
18c25cd3 |
| 29-Jul-2021 |
Omar Emara <[email protected]> |
[LLDB][GUI] Add Create Target form
This patch adds a Create Target form for the LLDB GUI. Additionally, an Arch Field was introduced to input an arch and the file and directory fields now have a req
[LLDB][GUI] Add Create Target form
This patch adds a Create Target form for the LLDB GUI. Additionally, an Arch Field was introduced to input an arch and the file and directory fields now have a required property.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D106192
show more ...
|
| #
ed5b4dbd |
| 26-Jul-2021 |
Omar Emara <[email protected]> |
[LLDB][GUI] Add Arch Field
This patch adds an Arch field that inputs and validates an arch spec.
Differential Revision: https://reviews.llvm.org/D106564
|
| #
fed25ddc |
| 26-Jul-2021 |
Omar Emara <[email protected]> |
[LLDB][GUI] Expand selected thread tree item by default
This patch expands the tree item that corresponds to the selected thread by default in the Threads window. Additionally, the tree root item is
[LLDB][GUI] Expand selected thread tree item by default
This patch expands the tree item that corresponds to the selected thread by default in the Threads window. Additionally, the tree root item is always expanded, which is the process in the Threads window.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D100243
show more ...
|
| #
a98f394e |
| 26-Jul-2021 |
Omar Emara <[email protected]> |
[LLDB][GUI] Resolve paths in file/directory fields
This patch resolves the paths in the file/directory fields before performing checks. Those checks are applied on the file system if m_need_to_exist
[LLDB][GUI] Resolve paths in file/directory fields
This patch resolves the paths in the file/directory fields before performing checks. Those checks are applied on the file system if m_need_to_exist is true, so remote files can set this to false to avoid performing host-side file system checks. Additionally, methods to get a resolved and a direct file specs were added to be used by client code.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D106553
show more ...
|
| #
80ac12b7 |
| 24-Jul-2021 |
Omar Emara <[email protected]> |
[LLDB][GUI] Check fields validity in actions
This patch adds a virtual method HasError to fields, it can be overridden by fields that have errors. Additionally, a form method CheckFieldsValidity was
[LLDB][GUI] Check fields validity in actions
This patch adds a virtual method HasError to fields, it can be overridden by fields that have errors. Additionally, a form method CheckFieldsValidity was added to be called by actions that expects all the field to be valid.
Differential Revision: https://reviews.llvm.org/D106459
show more ...
|
| #
e160b398 |
| 24-Jul-2021 |
Omar Emara <[email protected]> |
[LLDB][GUI] Add Platform Plugin Field
This patch adds a new Platform Plugin Field. It is a choices field that lists all the available platform plugins and can retrieve the name of the selected plugi
[LLDB][GUI] Add Platform Plugin Field
This patch adds a new Platform Plugin Field. It is a choices field that lists all the available platform plugins and can retrieve the name of the selected plugin. The default selected plugin is the currently selected one. This patch also allows for arbitrary scrolling to make scrolling easier when setting choices.
Differential Revision: https://reviews.llvm.org/D106483
show more ...
|
| #
9ef7de7c |
| 21-Jul-2021 |
Omar Emara <[email protected]> |
[LLDB][GUI] Add required property to text fields
This patch adds a required property to text fields and their derivatives. Additionally, the Process Name and PID fields in the attach form were marke
[LLDB][GUI] Add required property to text fields
This patch adds a required property to text fields and their derivatives. Additionally, the Process Name and PID fields in the attach form were marked as required.
Differential Revision: https://reviews.llvm.org/D106458
show more ...
|
| #
c93dc259 |
| 21-Jul-2021 |
Omar Emara <[email protected]> |
[LLDB][GUI] Add Process Plugin Field
This patch adds a new Process Plugin Field. It is a choices field that lists all the available process plugins and can retrieve the name of the selected plugin o
[LLDB][GUI] Add Process Plugin Field
This patch adds a new Process Plugin Field. It is a choices field that lists all the available process plugins and can retrieve the name of the selected plugin or an empty string if the default is selected.
The Attach form now uses that field instead of manually creating a choices field.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D106467
show more ...
|
| #
0321dbc8 |
| 15-Jul-2021 |
Omar Emara <[email protected]> |
[LLDB][GUI] Add Process Attach form
This patch adds a form window to attach a process, either by PID or by name. This patch also adds support for dynamic field visibility such that the form delegate
[LLDB][GUI] Add Process Attach form
This patch adds a form window to attach a process, either by PID or by name. This patch also adds support for dynamic field visibility such that the form delegate can hide or show certain fields based on some conditions.
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D105655
show more ...
|
| #
72748488 |
| 13-Jul-2021 |
Jan Kratochvil <[email protected]> |
[lldb] Fix editline unicode on Linux
Based on: [lldb-dev] proposed change to remove conditional WCHAR support in libedit wrapper https://lists.llvm.org/pipermail/lldb-dev/2021-July/016961.html
[lldb] Fix editline unicode on Linux
Based on: [lldb-dev] proposed change to remove conditional WCHAR support in libedit wrapper https://lists.llvm.org/pipermail/lldb-dev/2021-July/016961.html
There is already setlocale in lldb/source/Core/IOHandlerCursesGUI.cpp but that does not apply for Editline GUI editing.
Unaware how to make automated test for this, it requires pty.
Reviewed By: teemperor
Differential Revision: https://reviews.llvm.org/D105779
show more ...
|
| #
29cc50e1 |
| 07-Jul-2021 |
Omar Emara <[email protected]> |
[LLDB][GUI] Add initial forms support
This patch adds initial support for forms for the LLDB GUI. The currently supported form elements are Text fields, Integer fields, Boolean fields, Choices field
[LLDB][GUI] Add initial forms support
This patch adds initial support for forms for the LLDB GUI. The currently supported form elements are Text fields, Integer fields, Boolean fields, Choices fields, File fields, Directory fields, and List fields.
A form can be created by subclassing FormDelegate. In the constructor, field factory methods can be used to add new fields, storing the returned pointer in a member variable. One or more actions can be added using the AddAction method. The method takes a function with an interface void(Window &). This function will be executed whenever the user executes the action.
Example form definition:
```lang=cpp class TestFormDelegate : public FormDelegate { public: TestFormDelegate() { m_text_field = AddTextField("Text", "The big brown fox."); m_file_field = AddFileField("File", "/tmp/a"); m_directory_field = AddDirectoryField("Directory", "/tmp/"); m_integer_field = AddIntegerField("Number", 5); std::vector<std::string> choices; choices.push_back(std::string("Choice 1")); choices.push_back(std::string("Choice 2")); choices.push_back(std::string("Choice 3")); choices.push_back(std::string("Choice 4")); choices.push_back(std::string("Choice 5")); m_choices_field = AddChoicesField("Choices", 3, choices); m_bool_field = AddBooleanField("Boolean", true); TextFieldDelegate default_field = TextFieldDelegate("Text", "The big brown fox."); m_text_list_field = AddListField("Text List", default_field);
AddAction("Submit", [this](Window &window) { Submit(window); }); }
void Submit(Window &window) { SetError("An example error."); }
protected: TextFieldDelegate *m_text_field; FileFieldDelegate *m_file_field; DirectoryFieldDelegate *m_directory_field; IntegerFieldDelegate *m_integer_field; BooleanFieldDelegate *m_bool_field; ChoicesFieldDelegate *m_choices_field; ListFieldDelegate<TextFieldDelegate> *m_text_list_field; }; ```
Reviewed By: clayborg
Differential Revision: https://reviews.llvm.org/D104395
show more ...
|
| #
3b7795ae |
| 16-Jun-2021 |
Raphael Isemann <[email protected]> |
[lldb] vwprintw -> vw_printw in IOHandlerCursesGUI
`vwprintw` is (in theory) using the `arargs.h` va_list while `vw_printw` is using the `stdarg.h` va_list. It seems these days they can be used inte
[lldb] vwprintw -> vw_printw in IOHandlerCursesGUI
`vwprintw` is (in theory) using the `arargs.h` va_list while `vw_printw` is using the `stdarg.h` va_list. It seems these days they can be used interchangeably but `vwprintw` is marked as deprecated.
show more ...
|
| #
cfb96d84 |
| 12-Jun-2021 |
Jim Ingham <[email protected]> |
Convert functions that were returning BreakpointOption * to BreakpointOption &.
This is an NFC cleanup.
Many of the API's that returned BreakpointOptions always returned valid ones. Internally the
Convert functions that were returning BreakpointOption * to BreakpointOption &.
This is an NFC cleanup.
Many of the API's that returned BreakpointOptions always returned valid ones. Internally the BreakpointLocations usually have null BreakpointOptions, since they use their owner's options until an option is set specifically on the location. So the original code used pointers & unique_ptr everywhere for consistency. But that made the code hard to reason about from the outside.
This patch changes the code so that everywhere an API is guaranteed to return a non-null BreakpointOption, it returns it as a reference to make that clear.
It also changes the Breakpoint to hold a BreakpointOption member where it previously had a UP. Since we were always filling the UP in the Breakpoint constructor, having the UP wasn't helping anything.
Differential Revision: https://reviews.llvm.org/D104162
show more ...
|
| #
9494c510 |
| 09-Jun-2021 |
Jonas Devlieghere <[email protected]> |
[lldb] Use C++11 default member initializers
This converts a default constructor's member initializers into C++11 default member initializers. This patch was automatically generated with clang-tidy
[lldb] Use C++11 default member initializers
This converts a default constructor's member initializers into C++11 default member initializers. This patch was automatically generated with clang-tidy and the modernize-use-default-member-init check.
$ run-clang-tidy.py -header-filter='lldb' -checks='-*,modernize-use-default-member-init' -fix
This is a mass-refactoring patch and this commit will be added to .git-blame-ignore-revs.
Differential revision: https://reviews.llvm.org/D103483
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 ...
|
| #
e9fe788d |
| 16-Apr-2021 |
Jason Molenda <[email protected]> |
Target::ReadMemory read from read-only binary file Section, not memory
Commiting this patch for Augusto Noronha who is getting set up still.
This patch changes Target::ReadMemory so the default beh
Target::ReadMemory read from read-only binary file Section, not memory
Commiting this patch for Augusto Noronha who is getting set up still.
This patch changes Target::ReadMemory so the default behavior when a read is in a Section that is read-only is to fetch the data from the local binary image, instead of reading it from memory. Update all callers to use their old preferences (the old prefer_file_cache bool) using the new API; we should revisit these calls and see if they really intend to read live memory, or if reading from a read-only Section would be equivalent and important for performance-sensitive cases.
rdar://30634422
Differential revision: https://reviews.llvm.org/D100338
show more ...
|
| #
b4825a6d |
| 09-Mar-2021 |
Jordan Rupprecht <[email protected]> |
[lldb][gui] Fix uninitialized variable in SourceFileWindowDelegate.
After 5419b671375c46299ff1da6c929859040e7beaf5 (which is `[SimplifyCFG] Update FoldTwoEntryPHINode to handle and/or of select and
[lldb][gui] Fix uninitialized variable in SourceFileWindowDelegate.
After 5419b671375c46299ff1da6c929859040e7beaf5 (which is `[SimplifyCFG] Update FoldTwoEntryPHINode to handle and/or of select and binop equally`), this uninitialized value is detected by msan.
show more ...
|
| #
4631afde |
| 24-Feb-2021 |
Raphael Isemann <[email protected]> |
[lldb][NFC] Rename the second ValueObjectManager to ValueObjectUpdater and remove the dead code
`ValueObject.h` contains the `ValueObject::ValueObjectManager` type which is just a typedef for the Cl
[lldb][NFC] Rename the second ValueObjectManager to ValueObjectUpdater and remove the dead code
`ValueObject.h` contains the `ValueObject::ValueObjectManager` type which is just a typedef for the ClusterManager that takes care of the whole ValueObject memory management. However, there is also `ValueObjectManager` defined in the same header which is only used in the curses UI implementation and consists mostly of dead and completely untested code.
This code been around since a while (it was added in 2016 as 8369b28da0750129ababae357bea98940800a0e0), so I think we shouldn't just revert the whole patch.
Instead this patch just moves the class to its own header that it isn't just hiding in the ValueObject header and renames it to `ValueObjectUpdater` that it at least has a unique name (which I hope also slightly better reflects the purpose of this class). I also deleted all the dead code branches and functions.
Reviewed By: #lldb, mib, JDevlieghere
Differential Revision: https://reviews.llvm.org/D97287
show more ...
|