[Lldb-commits] [PATCH] D114544: [lldb] Fix 'memory write' to not allow specifying values when writing file contents

David Spickett via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Thu Nov 25 02:07:34 PST 2021


DavidSpickett added inline comments.


================
Comment at: lldb/source/Interpreter/CommandObject.cpp:457
             : OptSetFiltered(opt_set_mask, m_arguments[i]);
+    if (arg_entry.empty())
+      continue;
----------------
(like I said on the other diff)

What does it mean for an arg_entry to be empty? (please add the answer as a comment in the code as well)

I think this is avoiding trying to index [0] on an empty arg lower down:
```
    } else {
      StreamString names;
      for (int j = 0; j < num_alternatives; ++j) {
        if (j > 0)
          names.Printf(" | ");
        names.Printf("%s", GetArgumentName(arg_entry[j].arg_type));
      }

      std::string name_str = std::string(names.GetString());
      switch (arg_entry[0].arg_repetition) {
```

Which is fine but I'm not sure if arg_entry being empty is unusual enough to prefer an assert rather than skipping over it.


================
Comment at: lldb/test/API/commands/memory/write/TestMemoryWrite.py:1
+"""
+Test the 'memory write' command.
----------------
I wasn't expecting such thorough tests, this is great!


================
Comment at: lldb/test/API/commands/memory/write/TestMemoryWrite.py:49
+
+        # (lldb) memory read --format c --size 7 --count 1 `&my_string`
+        # 0x7fff5fbff990: abcdefg
----------------
You don't need to add these comments. The output is clear enough from the `expect` parameters.


================
Comment at: lldb/test/API/commands/memory/write/TestMemoryWrite.py:57
+        self.expect(
+            "memory write --format c --size 7 `&my_string` ABCDEFG", error=False)
+
----------------
I think `error=False` is the default so you can leave it out here. We tend to add `error=True` for the few times we want a failure.


================
Comment at: lldb/test/API/commands/memory/write/TestMemoryWrite.py:81
+            "memory write --infile file.txt --size 7 `&my_string` ABCDEFG", error=True,
+            substrs=['memory write takes only a destination address when writing file contents'])
+
----------------
So here I'd remove the comment and add "error: " to the start of the substr.


================
Comment at: lldb/test/API/commands/memory/write/TestMemoryWrite.py:94
+            "help memory write",
+            matching=True,
+            substrs=[
----------------
Again this is the default, the vast majority of the time we want a match so we only call out the few where we don't.


================
Comment at: lldb/test/API/commands/memory/write/TestMemoryWrite.py:96
+            substrs=[
+                "Command Options Usage:",
+                "memory write [-f <format>] [-s <byte-size>] <address> <value> [<value> [...]]",
----------------
You could skip this line. Small thing but we're not testing the general usage printing infrastructure here just the specifics in the following 2 lines.


================
Comment at: lldb/test/API/commands/memory/write/main.cpp:1
+#include <stdio.h>
+#include <stdint.h>
----------------
Trivial thing, but this file has no need to be .cpp since it's plain c.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D114544/new/

https://reviews.llvm.org/D114544



More information about the lldb-commits mailing list