#
243f52b5 |
| 28-Jan-2020 |
Raphael Isemann <teemperor@gmail.com> |
[lldb] Cut off unused suffix in CompletionRequest::GetRawLine
The GetRawLine currently returns the full command line used to create the CompletionRequest. So for example for "foo b[tab] --arg" it wo
[lldb] Cut off unused suffix in CompletionRequest::GetRawLine
The GetRawLine currently returns the full command line used to create the CompletionRequest. So for example for "foo b[tab] --arg" it would return the whole string instead of "foo b". Usually completion code makes the wrong assumption that the cursor is at the end of the line and handing out the complete line will cause that people implement completions that also make this assumption.
This patch makes GetRawLine() return only the string until the cursor and hides the suffix (so that the cursor is always at the end of this string) and adds another function GetRawLineWithUnusedSuffix that is specifically the line with the suffix that isn't used by the CompletionRequest for argument parsing etc.
There is only one user of this new function that actually needs the suffix and that is the expression command which needs the suffix to detect if it is in the raw or argument part of the command (by looking at the "--" separator).
show more ...
|
#
80814287 |
| 24-Jan-2020 |
Raphael Isemann <teemperor@gmail.com> |
[lldb][NFC] Fix all formatting errors in .cpp file headers
Summary: A *.cpp file header in LLDB (and in LLDB) should like this: ``` //===-- TestUtilities.cpp ----------------------------------------
[lldb][NFC] Fix all formatting errors in .cpp file headers
Summary: A *.cpp file header in LLDB (and in LLDB) should like this: ``` //===-- TestUtilities.cpp -------------------------------------------------===// ``` However in LLDB most of our source files have arbitrary changes to this format and these changes are spreading through LLDB as folks usually just use the existing source files as templates for their new files (most notably the unnecessary editor language indicator `-*- C++ -*-` is spreading and in every review someone is pointing out that this is wrong, resulting in people pointing out that this is done in the same way in other files).
This patch removes most of these inconsistencies including the editor language indicators, all the different missing/additional '-' characters, files that center the file name, missing trailing `===//` (mostly caused by clang-format breaking the line).
Reviewers: aprantl, espindola, jfb, shafik, JDevlieghere
Reviewed By: JDevlieghere
Subscribers: dexonsmith, wuzish, emaste, sdardis, nemanjai, kbarton, MaskRay, atanasyan, arphaman, jfb, abidh, jsji, JDevlieghere, usaxena95, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D73258
show more ...
|
#
7ce2de2c |
| 15-Jan-2020 |
Jonas Devlieghere <jonas@devlieghere.com> |
[lldb/Debugger] Rename IO handler methods to be more meaningful (NFC)
Make it clear form the method names whether they are synchronous or asynchronous.
|
Revision tags: llvmorg-11-init |
|
#
06832501 |
| 16-Dec-2019 |
Raphael Isemann <teemperor@gmail.com> |
[lldb][NFC] Remove unnecessary includes in source/Commands
Summary: This removes most of unnecessary includes in the `source/Commands` directory. This was generated by IWYU and a script that fixed a
[lldb][NFC] Remove unnecessary includes in source/Commands
Summary: This removes most of unnecessary includes in the `source/Commands` directory. This was generated by IWYU and a script that fixed all the bogus reports from IWYU. Patch is tested on Linux and macOS.
Reviewers: JDevlieghere
Reviewed By: JDevlieghere
Subscribers: krytarowski, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D71489
show more ...
|
Revision tags: llvmorg-9.0.1, llvmorg-9.0.1-rc3, llvmorg-9.0.1-rc2, llvmorg-9.0.1-rc1 |
|
#
5a1bac4d |
| 08-Nov-2019 |
Raphael Isemann <teemperor@gmail.com> |
[lldb] Make Target* a Target& in CommandObjectExpression::DoExecute REPL logic
Subscribers: JDevlieghere, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D70002
|
#
a925974b |
| 30-Oct-2019 |
Adrian Prantl <aprantl@apple.com> |
Run clang-format on lldb/source/Commands (NFC)
These files had a lot of whitespace errors in them which was a constant source of merge conflicts downstream.
|
#
7ca15ba7 |
| 27-Sep-2019 |
Lawrence D'Anna <lawrence_danna@apple.com> |
remove File::SetStream(), make new files instead.
Summary: This patch removes File::SetStream() and File::SetDescriptor(), and replaces most direct uses of File with pointers to File. Instead of cal
remove File::SetStream(), make new files instead.
Summary: This patch removes File::SetStream() and File::SetDescriptor(), and replaces most direct uses of File with pointers to File. Instead of calling SetStream() on a file, we make a new file and replace it.
My ultimate goal here is to introduce a new API class SBFile, which has full support for python io.IOStream file objects. These can redirect read() and write() to python code, so lldb::Files will need a way to dispatch those methods. Additionally it will need some form of sharing and assigning files, as a SBFile will be passed in and assigned to the main IO streams of the debugger.
In my prototype patch queue, I make File itself copyable and add a secondary class FileOps to manage the sharing and dispatch. In that case SBFile was a unique_ptr<File>. (here: https://github.com/smoofra/llvm-project/tree/files)
However in review, Pavel Labath suggested that it be shared_ptr instead. (here: https://reviews.llvm.org/D67793)
In order for SBFile to use shared_ptr<File>, everything else should as well.
If this patch is accepted, I will make SBFile use a shared_ptr I will remove FileOps from future patches and use subclasses of File instead.
Reviewers: JDevlieghere, jasonmolenda, zturner, jingham, labath
Reviewed By: labath
Subscribers: lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D67891
llvm-svn: 373090
show more ...
|
Revision tags: llvmorg-9.0.0, llvmorg-9.0.0-rc6, llvmorg-9.0.0-rc5, llvmorg-9.0.0-rc4, llvmorg-9.0.0-rc3 |
|
#
365b30a3 |
| 27-Aug-2019 |
Pavel Labath <pavel@labath.sk> |
CommandObjectExpression: Fix a misleading-indentation warning
llvm-svn: 370019
|
#
cb2380c9 |
| 26-Aug-2019 |
Raphael Isemann <teemperor@gmail.com> |
[lldb][NFC] Remove dead code that handles situations where LLDB has no dummy target
Summary: We always have a dummy target, so any error handling regarding a missing dummy target is dead code now. A
[lldb][NFC] Remove dead code that handles situations where LLDB has no dummy target
Summary: We always have a dummy target, so any error handling regarding a missing dummy target is dead code now. Also makes the CommandObject methods that return Target& to express this fact in the API.
This patch just for the CommandObject part of LLDB. I'll migrate the rest of LLDB in a follow-up patch that's WIP.
Reviewers: labath
Reviewed By: labath
Subscribers: abidh, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D66737
llvm-svn: 369939
show more ...
|
#
36162014 |
| 22-Aug-2019 |
Raphael Isemann <teemperor@gmail.com> |
[lldb][NFC] Remove dead code that is supposed to handle invalid command options
Summary: We currently have a bunch of code that is supposed to handle invalid command options, but all this code is un
[lldb][NFC] Remove dead code that is supposed to handle invalid command options
Summary: We currently have a bunch of code that is supposed to handle invalid command options, but all this code is unreachable because invalid options are already handled in `Options::Parse`. The only way we can reach this code is when we declare but then not implement an option (which will be made impossible with D65386, which is also when we can completely remove the `default` cases).
This patch replaces all this code with `llvm_unreachable` to make clear this is dead code that can't be reached.
Reviewers: JDevlieghere
Reviewed By: JDevlieghere
Subscribers: lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D66522
llvm-svn: 369625
show more ...
|
#
ae34ed2c |
| 22-Aug-2019 |
Raphael Isemann <teemperor@gmail.com> |
[lldb][NFC] Remove WordComplete mode, make result array indexed from 0 and remove any undocumented/redundant return values
Summary: We still have some leftovers of the old completion API in the inte
[lldb][NFC] Remove WordComplete mode, make result array indexed from 0 and remove any undocumented/redundant return values
Summary: We still have some leftovers of the old completion API in the internals of LLDB that haven't been replaced by the new CompletionRequest. These leftovers are:
* The return values (int/size_t) in all completion functions. * Our result array that starts indexing at 1. * `WordComplete` mode.
I didn't replace them back then because it's tricky to figure out what exactly they are used for and the completion code is relatively untested. I finally got around to writing more tests for the API and understanding the semantics, so I think it's a good time to get rid of them.
A few words why those things should be removed/replaced:
* The return values are really cryptic, partly redundant and rarely documented. They are also completely ignored by Xcode, so whatever information they contain will end up breaking Xcode's completion mechanism. They are also partly impossible to even implement as we assign negative values special meaning and our completion API sometimes returns size_t.
Completion functions are supposed to return -2 to rewrite the current line. We seem to use this in some untested code path to expand the history repeat character to the full command, but I haven't figured out why that doesn't work at the moment. Completion functions return -1 to 'insert the completion character', but that isn't implemented (even though we seem to activate this feature in LLDB sometimes). All positive values have to match the number of results. This is obviously just redundant information as the user can just look at the result list to get that information (which is what Xcode does).
* The result array that starts indexing at 1 is obviously unexpected. The first element of the array is reserved for the common prefix of all completions (e.g. "foobar" and "footar" -> "foo"). The idea is that we calculate this to make the life of the API caller easier, but obviously forcing people to have 1-based indices is not helpful (or even worse, forces them to manually copy the results to make it 0-based like Xcode has to do).
* The `WordComplete` mode indicates that LLDB should enter a space behind the completion. The idea is that we let the top-level API know that we just provided a full completion. Interestingly we `WordComplete` is just a single bool that somehow represents all N completions. And we always provide full completions in LLDB, so in theory it should always be true. The only use it currently serves is providing redundant information about whether we have a single definitive completion or not (which we already know from the number of results we get).
This patch essentially removes `WordComplete` mode and makes the result array indexed from 0. It also removes all return values from all internal completion functions. The only non-redundant information they contain is about rewriting the current line (which is broken), so that functionality was moved to the CompletionRequest API. So you can now do `addCompletion("blub", "description", CompletionMode::RewriteLine)` to do the same.
For the SB API we emulate the old behaviour by making the array indexed from 1 again with the common prefix at index 0. I didn't keep the special negative return codes as we either never sent them before (e.g. -2) or we didn't even implement them in the Editline handler (e.g. -1).
I tried to keep this patch minimal and I'm aware we can probably now even further simplify a bunch of related code, but I would prefer doing this in follow-up NFC commits
Reviewers: JDevlieghere
Reviewed By: JDevlieghere
Subscribers: arphaman, abidh, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D66536
llvm-svn: 369624
show more ...
|
Revision tags: llvmorg-9.0.0-rc2 |
|
#
e063eccc |
| 02-Aug-2019 |
Jonas Devlieghere <jonas@devlieghere.com> |
Format OptionEnumValueElement (NFC)
Reformat OptionEnumValueElement to make it easier to distinguish between its fields. This also removes the need to disable clang-format for these arrays.
Differe
Format OptionEnumValueElement (NFC)
Reformat OptionEnumValueElement to make it easier to distinguish between its fields. This also removes the need to disable clang-format for these arrays.
Differential revision: https://reviews.llvm.org/D65489
llvm-svn: 367638
show more ...
|
Revision tags: llvmorg-9.0.0-rc1 |
|
#
bd68a052 |
| 28-Jul-2019 |
Raphael Isemann <teemperor@gmail.com> |
[lldb] Also include the array definition in CommandOptions.inc
Summary: Right now our CommandOptions.inc only generates the initializer for the options list but not the array declaration boilerplate
[lldb] Also include the array definition in CommandOptions.inc
Summary: Right now our CommandOptions.inc only generates the initializer for the options list but not the array declaration boilerplate around it. As the array definition is identical for all arrays, we might as well also let the CommandOptions.inc generate it alongside the initializers.
This patch will also allow us to generate additional declarations related to that option list in the future (e.g. a enum class representing the specific options which would make our handling code less prone).
This patch also fixes a few option tables that didn't follow our naming style.
Reviewers: JDevlieghere
Reviewed By: JDevlieghere
Subscribers: abidh, lldb-commits
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D65331
llvm-svn: 367186
show more ...
|
#
ec67e734 |
| 25-Jul-2019 |
Raphael Isemann <teemperor@gmail.com> |
[lldb] Tablegenify expr/frame/log/register/memory
llvm-svn: 367009
|
Revision tags: llvmorg-10-init, llvmorg-8.0.1, llvmorg-8.0.1-rc4, llvmorg-8.0.1-rc3, llvmorg-8.0.1-rc2 |
|
#
fde26d22 |
| 02-Jun-2019 |
Alex Langford <apl@fb.com> |
[Commands] Remove unused header
llvm-svn: 362339
|
Revision tags: llvmorg-8.0.1-rc1 |
|
#
57179860 |
| 27-Apr-2019 |
Jonas Devlieghere <jonas@devlieghere.com> |
[CommandObject] Use GetDebugger() helper method (NFC)
In r359354 a GetDebugger() method was added to the CommandObject class, so that we didn't have to go through the command interpreter to obtain t
[CommandObject] Use GetDebugger() helper method (NFC)
In r359354 a GetDebugger() method was added to the CommandObject class, so that we didn't have to go through the command interpreter to obtain the script interpreter. This patch simplifies other call sites where m_interpreter.GetDebugger() was used, and replaces them with a shorter call to the new method.
llvm-svn: 359373
show more ...
|
Revision tags: llvmorg-8.0.0, llvmorg-8.0.0-rc5 |
|
#
c5bfa3da |
| 09-Mar-2019 |
Jonas Devlieghere <jonas@devlieghere.com> |
Break cycle lldb/Commands [3->] lldb/Expression [1->] lldb/Commands
Inspired by Zachary's mail on lldb-dev, this seemed like low hanging fruit. This patch breaks the circular dependency between comm
Break cycle lldb/Commands [3->] lldb/Expression [1->] lldb/Commands
Inspired by Zachary's mail on lldb-dev, this seemed like low hanging fruit. This patch breaks the circular dependency between commands and expression.
Differential revision: https://reviews.llvm.org/D59158
llvm-svn: 355762
show more ...
|
Revision tags: llvmorg-8.0.0-rc4 |
|
#
d77c2e09 |
| 02-Mar-2019 |
Jonas Devlieghere <jonas@devlieghere.com> |
[Reproducers] Capture and replay interpreter commands.
This patch adds the necessary logic to capture and replay commands entered into the command interpreter. A DataRecorder shadows the input and w
[Reproducers] Capture and replay interpreter commands.
This patch adds the necessary logic to capture and replay commands entered into the command interpreter. A DataRecorder shadows the input and writes its data to a know file. During replay this file is used as the command interpreter's input.
It's possible to the command interpreter more than once, with a different input source. We support this scenario by using multiple buffers. The synchronization for this takes place at the SB layer, where we create a new recorder every time the debugger input is changed. During replay we use the corresponding buffer as input.
Differential revision: https://reviews.llvm.org/D58564
llvm-svn: 355249
show more ...
|
Revision tags: llvmorg-8.0.0-rc3, llvmorg-7.1.0, llvmorg-7.1.0-rc1, llvmorg-8.0.0-rc2 |
|
#
40624a08 |
| 05-Feb-2019 |
Aleksandr Urakov <aleksandr.urakov@jetbrains.com> |
[Expressions] Add support of expressions evaluation in some object's context
Summary: This patch adds support of expression evaluation in a context of some object. Consider the following example: ``
[Expressions] Add support of expressions evaluation in some object's context
Summary: This patch adds support of expression evaluation in a context of some object. Consider the following example: ``` struct S { int a = 11; int b = 12; };
int main() { S s; int a = 1; int b = 2; // We have stopped here return 0; } ``` This patch allows to do something like that: ``` lldb.frame.FindVariable("s").EvaluateExpression("a + b") ``` and the result will be `33` (not `3`) because fields `a` and `b` of `s` will be used (not locals `a` and `b`).
This is achieved by replacing of `this` type and object for the expression. This has some limitations: an expression can be evaluated only for values located in the debuggee process memory (they must have an address of `eAddressTypeLoad` type).
Reviewers: teemperor, clayborg, jingham, zturner, labath, davide, spyffe, serge-sans-paille
Reviewed By: jingham
Subscribers: abidh, lldb-commits, leonid.mashinskiy
Tags: #lldb
Differential Revision: https://reviews.llvm.org/D55318
llvm-svn: 353149
show more ...
|
Revision tags: llvmorg-8.0.0-rc1 |
|
#
2946cd70 |
| 19-Jan-2019 |
Chandler Carruth <chandlerc@gmail.com> |
Update the file headers across all of the LLVM projects in the monorepo to reflect the new license.
We understand that people may be surprised that we're moving the header entirely to discuss the ne
Update the file headers across all of the LLVM projects in the monorepo to reflect the new license.
We understand that people may be surprised that we're moving the header entirely to discuss the new license. We checked this carefully with the Foundation's lawyer and we believe this is the correct approach.
Essentially, all code in the project is now made available by the LLVM project under our new license, so you will see that the license headers include that license only. Some of our contributors have contributed code under our old license, and accordingly, we have retained a copy of our old license notice in the top-level files in each project and repository.
llvm-svn: 351636
show more ...
|
#
a6682a41 |
| 15-Dec-2018 |
Jonas Devlieghere <jonas@devlieghere.com> |
Simplify Boolean expressions
This patch simplifies boolean expressions acorss LLDB. It was generated using clang-tidy with the following command:
run-clang-tidy.py -checks='-*,readability-simplify-
Simplify Boolean expressions
This patch simplifies boolean expressions acorss LLDB. It was generated using clang-tidy with the following command:
run-clang-tidy.py -checks='-*,readability-simplify-boolean-expr' -format -fix $PWD
Differential revision: https://reviews.llvm.org/D55584
llvm-svn: 349215
show more ...
|
Revision tags: llvmorg-7.0.1, llvmorg-7.0.1-rc3 |
|
#
ceff6644 |
| 11-Nov-2018 |
Jonas Devlieghere <jonas@devlieghere.com> |
Remove header grouping comments.
This patch removes the comments grouping header includes. They were added after running IWYU over the LLDB codebase. However they add little value, are often outdate
Remove header grouping comments.
This patch removes the comments grouping header includes. They were added after running IWYU over the LLDB codebase. However they add little value, are often outdates and burdensome to maintain.
llvm-svn: 346626
show more ...
|
Revision tags: llvmorg-7.0.1-rc2, llvmorg-7.0.1-rc1 |
|
#
a35912da |
| 18-Oct-2018 |
Krasimir Georgiev <krasimir@google.com> |
Revert "Return a named error in the result object of an expression with no result"
This reverts commit r344647. This causes build failures with [-Werror, -Wswitch]. Some cases where the newly introd
Revert "Return a named error in the result object of an expression with no result"
This reverts commit r344647. This causes build failures with [-Werror, -Wswitch]. Some cases where the newly introduced enum value is not handled in particular are in: lldb/source/Expression/REPL.cpp:350 lldb/source/Interpreter/CommandInterpreter.cpp:1529 (maybe there could be more)
As I don't understand lldb to make sure the likely trivial fixes are correct and also as they might need additional tests, leaving to the author to resolve.
llvm-svn: 344722
show more ...
|
#
b1ecc3ca |
| 16-Oct-2018 |
Jim Ingham <jingham@apple.com> |
Return a named error in the result object of an expression with no result
Before we returned an error that was not exposed in the SB API and no useful error message. This change returns eExpression
Return a named error in the result object of an expression with no result
Before we returned an error that was not exposed in the SB API and no useful error message. This change returns eExpressionProducedNoResult and an appropriate error string.
<rdar://problem/44539514>
Differential Revision: https://reviews.llvm.org/D53309
llvm-svn: 344647
show more ...
|
#
8fe53c49 |
| 26-Sep-2018 |
Tatyana Krasnukha <tatyana@synopsys.com> |
Replace "nullptr-terminated" C-arrays of OptionValueEnumeration with safer llvm::ArrayRef
Differential Revision: https://reviews.llvm.org/D49017
llvm-svn: 343130
|