omjavaid added a comment.

Is this final version or you are still doing refactoring. Also can you kindly 
order its child and parent revs in current tag-write patch series.



================
Comment at: lldb/source/Commands/CommandObjectMemoryTag.cpp:70
     Process *process = m_exe_ctx.GetProcessPtr();
     llvm::Expected<const MemoryTagManager *> tag_manager_or_err =
+        process->GetMemoryTagManager();
----------------
DavidSpickett wrote:
> DavidSpickett wrote:
> > 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.
> On second thought I'd rather leave `GetMemoryTagManager` as it is.
> 
> If we split the checks up we'll have the same 2 checks repeated in:
> * `memory tag read`, `memory tag write` (same file so you could make a helper 
> function)
> * `Process::ReadMemoryTags`, `Process::WriteMemoryTags` (again you could make 
> a helper but...)
> 
> That helper would be what `GetMemoryTagManager` is now. Leaving it as is 
> saves duplicating it.
> 
> I thought of simply only checking `SupportsMemoryTagging` in 
> Process::ReadMemoryTags. Problem with that is that you would never get this 
> error if your remote wasn't able to show you MTE memory region flags. And 
> you'd hope the most obvious checks would come first.
> 
> The other reason to split the 2 checks is so `GetMemoryTagManager` could be 
> called from the API to get a manager even if the remote didn't support MTE. 
> Which seems like a very niche use case, perhaps you've got some very old 
> remote but are somehow running an MTE enabled program on it? Seems unlikely.
> 
> If we find a use case later when I work on the API then it'll be easy to 
> switch it around anyway.
Agreed no strong reason to further split GetMemoryTagManager. API use-case may 
never be utilized and we can always come back and refactor if need arises.


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