[PATCH] D101000: Coverage: Document how to collect a profile without a filesystem
Duncan P. N. Exon Smith via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 21 16:27:16 PDT 2021
dexonsmith updated this revision to Diff 339423.
dexonsmith added a comment.
Incorporate feedback from @vsk:
- a bit more explanatory text for the overall context
- explicitly reference the static initializers
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D101000/new/
https://reviews.llvm.org/D101000
Files:
clang/docs/SourceBasedCodeCoverage.rst
Index: clang/docs/SourceBasedCodeCoverage.rst
===================================================================
--- clang/docs/SourceBasedCodeCoverage.rst
+++ clang/docs/SourceBasedCodeCoverage.rst
@@ -346,6 +346,34 @@
In C++ files, declare these as ``extern "C"``.
+Using the profiling runtime without a filesystem
+------------------------------------------------
+
+The profiling runtime also supports freestanding environments that lack a
+filesystem. The runtime ships as a static archive that's structured to make
+dependencies on a hosted environment optional, depending on what features
+the client application uses.
+
+The first step is to export ``__llvm_profile_runtime``, as above, to disable
+the default static initializers. Instead of calling the ``*_file()`` APIs
+described above, use the following to save the profile directly to a buffer
+under your control:
+
+* Forward-declare ``uint64_t __llvm_profile_get_size_for_buffer(void)`` and
+ call it to determine the size of the profile. You'll need to allocate a
+ buffer of this size.
+
+* Forward-declare ``int __llvm_profile_write_buffer(char *Buffer)`` and call it
+ to copy the current counters to ``Buffer``, which is expected to already be
+ allocated and big enough for the profile.
+
+* Optionally, forward-declare ``void __llvm_profile_reset_counters(void)`` and
+ call it to reset the counters before entering a specific section to be
+ profiled. This is only useful if there is some setup that should be excluded
+ from the profile.
+
+In C++ files, declare these as ``extern "C"``.
+
Collecting coverage reports for the llvm project
================================================
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D101000.339423.patch
Type: text/x-patch
Size: 1681 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210421/1b25b891/attachment.bin>
More information about the cfe-commits
mailing list