This new command looks much like "memory read"
and mirrors its basic behaviour.
(lldb) memory tag read new_buf_ptr new_buf_ptr+32
Logical tag: 0x9
Allocation tags:
[0x900fffff7ffa000, 0x900fffff7ffa010): 0x9
[0x900fffff7ffa010, 0x900fffff7ffa020): 0x0
Important proprties:
- The end address is optional and defaults to reading 1 tag if ommitted
- It is an error to try to read tags if the architecture or process doesn't support it, or if the range asked for is not tagged.
- It is an error to read an inverted range (end < begin) (logical tags are removed for this check so you can pass tagged addresses here)
- The range will be expanded to fit the tagging granule, so you can get more tags than simply (end-begin)/granule size. Whatever you get back will always cover the original range.
https://developer.arm.com/documentation/101028/0012/10--Memory-tagging-intrinsics for descriptions of these functions.
I probably need to add some more comments here for the unfamiliar.