forked from OSchip/llvm-project
070090d08e
This adds an option --show-tags to "memory read". (lldb) memory read mte_buf mte_buf+32 -f "x" -s8 --show-tags 0x900fffff7ff8000: 0x0000000000000000 0x0000000000000000 (tag: 0x0) 0x900fffff7ff8010: 0x0000000000000000 0x0000000000000000 (tag: 0x1) Tags are printed on the end of each line, if that line has any tags associated with it. Meaning that untagged memory output is unchanged. Tags are printed based on the granule(s) of memory that a line covers. So you may have lines with 1 tag, with many tags, no tags or partially tagged lines. In the case of partially tagged lines, untagged granules will show "<no tag>" so that the ordering is obvious. For example, a line that covers 2 granules where the first is not tagged: (lldb) memory read mte_buf-16 mte_buf+16 -l32 -f"x" --show-tags 0x900fffff7ff7ff0: 0x00000000 <...> (tags: <no tag> 0x0) Untagged lines will just not have the "(tags: ..." at all. Though they may be part of a larger output that does have some tagged lines. To do this I've extended DumpDataExtractor to also print memory tags where it has a valid execution context and is asked to print them. There are no special alignment requirements, simply use "memory read" as usual. All alignment is handled in DumpDataExtractor. We use MakeTaggedRanges to find all the tagged memory in the current dump, then read all that into a MemoryTagMap. The tag map is populated once in DumpDataExtractor and re-used for each subsequently printed line (or recursive call of DumpDataExtractor, which some formats do). Reviewed By: omjavaid Differential Revision: https://reviews.llvm.org/D107140 |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
CommandCompletions.cpp | ||
CommandObjectApropos.cpp | ||
CommandObjectApropos.h | ||
CommandObjectBreakpoint.cpp | ||
CommandObjectBreakpoint.h | ||
CommandObjectBreakpointCommand.cpp | ||
CommandObjectBreakpointCommand.h | ||
CommandObjectCommands.cpp | ||
CommandObjectCommands.h | ||
CommandObjectDisassemble.cpp | ||
CommandObjectDisassemble.h | ||
CommandObjectExpression.cpp | ||
CommandObjectExpression.h | ||
CommandObjectFrame.cpp | ||
CommandObjectFrame.h | ||
CommandObjectGUI.cpp | ||
CommandObjectGUI.h | ||
CommandObjectHelp.cpp | ||
CommandObjectHelp.h | ||
CommandObjectLanguage.cpp | ||
CommandObjectLanguage.h | ||
CommandObjectLog.cpp | ||
CommandObjectLog.h | ||
CommandObjectMemory.cpp | ||
CommandObjectMemory.h | ||
CommandObjectMemoryTag.cpp | ||
CommandObjectMemoryTag.h | ||
CommandObjectMultiword.cpp | ||
CommandObjectPlatform.cpp | ||
CommandObjectPlatform.h | ||
CommandObjectPlugin.cpp | ||
CommandObjectPlugin.h | ||
CommandObjectProcess.cpp | ||
CommandObjectProcess.h | ||
CommandObjectQuit.cpp | ||
CommandObjectQuit.h | ||
CommandObjectRegexCommand.cpp | ||
CommandObjectRegexCommand.h | ||
CommandObjectRegister.cpp | ||
CommandObjectRegister.h | ||
CommandObjectReproducer.cpp | ||
CommandObjectReproducer.h | ||
CommandObjectScript.cpp | ||
CommandObjectScript.h | ||
CommandObjectSession.cpp | ||
CommandObjectSession.h | ||
CommandObjectSettings.cpp | ||
CommandObjectSettings.h | ||
CommandObjectSource.cpp | ||
CommandObjectSource.h | ||
CommandObjectStats.cpp | ||
CommandObjectStats.h | ||
CommandObjectTarget.cpp | ||
CommandObjectTarget.h | ||
CommandObjectThread.cpp | ||
CommandObjectThread.h | ||
CommandObjectThreadUtil.cpp | ||
CommandObjectThreadUtil.h | ||
CommandObjectTrace.cpp | ||
CommandObjectTrace.h | ||
CommandObjectType.cpp | ||
CommandObjectType.h | ||
CommandObjectVersion.cpp | ||
CommandObjectVersion.h | ||
CommandObjectWatchpoint.cpp | ||
CommandObjectWatchpoint.h | ||
CommandObjectWatchpointCommand.cpp | ||
CommandObjectWatchpointCommand.h | ||
CommandOptionsProcessLaunch.cpp | ||
CommandOptionsProcessLaunch.h | ||
Options.td | ||
OptionsBase.td |