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 |
||
---|---|---|
.. | ||
AMDGPU | ||
AMDGPUDwarfExtensionAllowLocationDescriptionOnTheDwarfExpressionStack | ||
CommandGuide | ||
DependenceGraphs | ||
Frontend | ||
GlobalISel | ||
HistoricalNotes | ||
PDB | ||
Proposals | ||
TableGen | ||
_ocamldoc | ||
_static | ||
_templates | ||
_themes/llvm-theme | ||
tutorial | ||
AMDGPUDwarfExtensionsForHeterogeneousDebugging.rst | ||
AMDGPUInstructionNotation.rst | ||
AMDGPUInstructionSyntax.rst | ||
AMDGPUModifierSyntax.rst | ||
AMDGPUOperandSyntax.rst | ||
AMDGPUUsage.rst | ||
ARM-BE-bitcastfail.png | ||
ARM-BE-bitcastsuccess.png | ||
ARM-BE-ld1.png | ||
ARM-BE-ldr.png | ||
AddingConstrainedIntrinsics.rst | ||
AdvancedBuilds.rst | ||
AliasAnalysis.rst | ||
Atomics.rst | ||
Benchmarking.rst | ||
BigEndianNEON.rst | ||
BitCodeFormat.rst | ||
BlockFrequencyTerminology.rst | ||
BranchWeightMetadata.rst | ||
BugLifeCycle.rst | ||
Bugpoint.rst | ||
BugpointRedesign.md | ||
BuildingADistribution.rst | ||
CFIVerify.rst | ||
CMake.rst | ||
CMakeLists.txt | ||
CMakePrimer.rst | ||
CodeGenerator.rst | ||
CodeOfConduct.rst | ||
CodeReview.rst | ||
CodingStandards.rst | ||
CommandLine.rst | ||
CompileCudaWithLLVM.rst | ||
CompilerWriterInfo.rst | ||
Contributing.rst | ||
Coroutines.rst | ||
CoverageMappingFormat.rst | ||
CycleTerminology.rst | ||
DebuggingJITedCode.rst | ||
DeveloperPolicy.rst | ||
DiscourseMigrationGuide.md | ||
Docker.rst | ||
ExceptionHandling.rst | ||
ExtendedIntegerResults.txt | ||
ExtendingLLVM.rst | ||
Extensions.rst | ||
FAQ.rst | ||
FaultMaps.rst | ||
FuzzingLLVM.rst | ||
GarbageCollection.rst | ||
GetElementPtr.rst | ||
GettingInvolved.rst | ||
GettingStarted.rst | ||
GettingStartedTutorials.rst | ||
GettingStartedVS.rst | ||
GitBisecting.rst | ||
GitRepositoryPolicy.md | ||
GoldPlugin.rst | ||
GwpAsan.rst | ||
HowToAddABuilder.rst | ||
HowToBuildOnARM.rst | ||
HowToBuildWindowsItaniumPrograms.rst | ||
HowToBuildWithPGO.rst | ||
HowToCrossCompileBuiltinsOnArm.rst | ||
HowToCrossCompileLLVM.rst | ||
HowToReleaseLLVM.rst | ||
HowToSetUpLLVMStyleRTTI.rst | ||
HowToSubmitABug.rst | ||
HowToUpdateDebugInfo.rst | ||
HowToUseAttributes.rst | ||
HowToUseInstrMappings.rst | ||
InAlloca.rst | ||
JITLink.rst | ||
LangRef.rst | ||
Lexicon.rst | ||
LibFuzzer.rst | ||
LinkTimeOptimization.rst | ||
LoopTerminology.rst | ||
MCJIT-creation.png | ||
MCJIT-dyld-load.png | ||
MCJIT-engine-builder.png | ||
MCJIT-load-object.png | ||
MCJIT-load.png | ||
MCJIT-resolve-relocations.png | ||
MCJITDesignAndImplementation.rst | ||
MIRLangRef.rst | ||
MarkdownQuickstartTemplate.md | ||
MarkedUpDisassembly.rst | ||
MeetupGuidelines.rst | ||
MemTagSanitizer.rst | ||
MemorySSA.rst | ||
MergeFunctions.rst | ||
MyFirstTypoFix.rst | ||
NVPTXUsage.rst | ||
NewPassManager.rst | ||
ORCv2.rst | ||
OpaquePointers.rst | ||
OptBisect.rst | ||
Packaging.rst | ||
Passes.rst | ||
Phabricator.rst | ||
Phabricator_premerge_results.png | ||
Phabricator_premerge_unit_tests.png | ||
PointerAuth.md | ||
ProgrammersManual.rst | ||
Projects.rst | ||
README.txt | ||
Reference.rst | ||
ReleaseNotes.rst | ||
ReleaseProcess.rst | ||
Remarks.rst | ||
ReportingGuide.rst | ||
ScudoHardenedAllocator.rst | ||
Security.rst | ||
SecurityTransparencyReports.rst | ||
SegmentedStacks.rst | ||
SourceLevelDebugging.rst | ||
SpeculativeLoadHardening.md | ||
SphinxQuickstartTemplate.rst | ||
StackMaps.rst | ||
StackSafetyAnalysis.rst | ||
Statepoints.rst | ||
SupportLibrary.rst | ||
SupportPolicy.rst | ||
SystemLibrary.rst | ||
TableGenFundamentals.rst | ||
TestSuiteGuide.md | ||
TestSuiteMakefileGuide.rst | ||
TestingGuide.rst | ||
TransformMetadata.rst | ||
TypeMetadata.rst | ||
UserGuides.rst | ||
Vectorizers.rst | ||
WritingAnLLVMBackend.rst | ||
WritingAnLLVMNewPMPass.rst | ||
WritingAnLLVMPass.rst | ||
XRay.rst | ||
XRayExample.rst | ||
XRayFDRFormat.rst | ||
YamlIO.rst | ||
buildbot_worker_contact.png | ||
conf.py | ||
cycle-1.png | ||
cycle-2.png | ||
cycle-3.png | ||
doxygen-mainpage.dox | ||
doxygen.cfg.in | ||
epilogue-vectorization-cfg.png | ||
gcc-loops.png | ||
index.rst | ||
linpack-pc.png | ||
llvm-objdump.1 | ||
loop-guard.svg | ||
loop-irreducible.svg | ||
loop-merge.svg | ||
loop-nested.svg | ||
loop-nonmaximal.svg | ||
loop-separate.svg | ||
loop-single.svg | ||
loop-terminology-guarded-loop.png | ||
loop-terminology-initial-loop.png | ||
loop-terminology-rotated-loop.png | ||
loop-terminology.svg | ||
make.bat | ||
re_format.7 | ||
speculative_load_hardening_microbenchmarks.png | ||
yaml2obj.rst |
README.txt
LLVM Documentation ================== LLVM's documentation is written in reStructuredText, a lightweight plaintext markup language (file extension `.rst`). While the reStructuredText documentation should be quite readable in source form, it is mostly meant to be processed by the Sphinx documentation generation system to create HTML pages which are hosted on <https://llvm.org/docs/> and updated after every commit. Manpage output is also supported, see below. If you instead would like to generate and view the HTML locally, install Sphinx <http://sphinx-doc.org/> and then do: cd <build-dir> cmake -DLLVM_ENABLE_SPHINX=true -DSPHINX_OUTPUT_HTML=true <src-dir> make -j3 docs-llvm-html $BROWSER <build-dir>/docs/html/index.html The mapping between reStructuredText files and generated documentation is `docs/Foo.rst` <-> `<build-dir>/docs//html/Foo.html` <-> `https://llvm.org/docs/Foo.html`. If you are interested in writing new documentation, you will want to read `SphinxQuickstartTemplate.rst` which will get you writing documentation very fast and includes examples of the most important reStructuredText markup syntax. Manpage Output =============== Building the manpages is similar to building the HTML documentation. The primary difference is to use the `man` makefile target, instead of the default (which is `html`). Sphinx then produces the man pages in the directory `<build-dir>/docs/man/`. cd <build-dir> cmake -DLLVM_ENABLE_SPHINX=true -DSPHINX_OUTPUT_MAN=true <src-dir> make -j3 docs-llvm-man man -l <build-dir>/docs/man/FileCheck.1 The correspondence between .rst files and man pages is `docs/CommandGuide/Foo.rst` <-> `<build-dir>/docs//man/Foo.1`. These .rst files are also included during HTML generation so they are also viewable online (as noted above) at e.g. `https://llvm.org/docs/CommandGuide/Foo.html`. Checking links ============== The reachability of external links in the documentation can be checked by running: cd llvm/docs/ sphinx-build -b linkcheck . _build/lintcheck/ # report will be generated in _build/lintcheck/output.txt Doxygen page Output ============== Install doxygen <https://www.doxygen.nl/download.html> and dot2tex <https://dot2tex.readthedocs.io/en/latest>. cd <build-dir> cmake -DLLVM_ENABLE_DOXYGEN=On <llvm-top-src-dir> make doxygen-llvm # for LLVM docs make doxygen-clang # for clang docs It will generate html in <build-dir>/docs/doxygen/html # for LLVM docs <build-dir>/tools/clang/docs/doxygen/html # for clang docs