DavidSpickett added a comment.

> It will become a bit more complicated for a reader who have no knowledge 
> about memory tag range and disjoint region.

I've added/updated some of the comments in `MakeTaggedRange`. Maybe you can 
highlight any bits that aren't clear and I'll make sure they get comments too.



================
Comment at: lldb/include/lldb/Target/MemoryTagManager.h:66
+  // If so, return a modified range. This will be expanded to be
+  // granule aligned and have an untagged base address.
+  virtual llvm::Expected<TagRange> MakeTaggedRange(
----------------
omjavaid wrote:
> I couldnt understand this point in comment  "have an untagged base address" 
This is noted for 2 reasons:
* Callers don't need to remove tags before displaying the range (memory tag 
read).
* There's potentially 2 different tags, begin/end, so removing them is the 
easiest way to make (or rather not make) that choice.

You could keep the base tagged the same as `addr` but the code works out 
simpler if you don't and all it means is that `memory tag read` has to remove 
the tags itself. If it turns out that most callers want it tagged then sure 
I'll change the behaviour.


================
Comment at: lldb/source/Commands/CommandObjectMemoryTag.cpp:70
     Process *process = m_exe_ctx.GetProcessPtr();
     llvm::Expected<const MemoryTagManager *> tag_manager_or_err =
+        process->GetMemoryTagManager();
----------------
omjavaid wrote:
> If we also pull out the SupportsMemoryTagging out of GetMemoryTagManager we 
> can directly return a tag manager pointer here.
> 
> Also SupportsMemoryTagging may also run once for the life time of a process? 
> We can store this information is a flag or something.
> 
> 
> If we also pull out the SupportsMemoryTagging out of GetMemoryTagManager we 
> can directly return a tag manager pointer here.

Sure, that way `GetMemoryTagManager` does exactly what it says on the tin. I 
can just make a utility function in `CommandObjectMemoryTag.cpp` to reduce the 
duplication of checking both, when adding the write command.

Will do that in the next update.

> Also SupportsMemoryTagging may also run once for the life time of a process? 
> We can store this information is a flag or something.

It already is in that for the GDB remote it'll only send a `qSupported` the 
first time it (or any other property) is asked for. So we go through a few 
function calls but that's it.


================
Comment at: lldb/source/Commands/CommandObjectMemoryTag.cpp:71
     llvm::Expected<const MemoryTagManager *> tag_manager_or_err =
-        process->GetMemoryTagManager(start_addr, end_addr);
+        process->GetMemoryTagManager();
 
----------------
omjavaid wrote:
> should we process pointer validity check before this call?
Covered by `eCommandRequiresProcess` in the constructor.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D105630

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to