public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug gcov-profile/112829] New: Dump PGO profiles to a memory buffer
@ 2023-12-03 5:58 zamazan4ik at tut dot by
2023-12-04 0:27 ` [Bug gcov-profile/112829] " pinskia at gcc dot gnu.org
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: zamazan4ik at tut dot by @ 2023-12-03 5:58 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112829
Bug ID: 112829
Summary: Dump PGO profiles to a memory buffer
Product: gcc
Version: unknown
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: gcov-profile
Assignee: unassigned at gcc dot gnu.org
Reporter: zamazan4ik at tut dot by
CC: marxin at gcc dot gnu.org
Target Milestone: ---
According to the GCC documentation
(https://gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html) the only
option is to dump PGO profiles to a filesystem. I am looking for an option to
dump PGO profiles into a memory buffer. LLVM infrastructure has such an ability
- it's documented here:
https://clang.llvm.org/docs/SourceBasedCodeCoverage.html#using-the-profiling-runtime-without-a-filesystem
. If GCC has such an ability too - would be great if it would be described
somewhere in the Instrumentation documentation (or in any other better place in
your opinion).
The use case for having this is simple - in some systems, a filesystem can be
read-only (e.g. due to security concerns) or even not enough to handle the PGO
profile. With the memory approach, we will be able to collect PGO profiles and
then deliver and expose them via other interfaces like HTTP or MQTT.
I guess some related information can be found here
(https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libgcc/libgcov-profiler.c) but I
am not sure.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug gcov-profile/112829] Dump PGO profiles to a memory buffer
2023-12-03 5:58 [Bug gcov-profile/112829] New: Dump PGO profiles to a memory buffer zamazan4ik at tut dot by
@ 2023-12-04 0:27 ` pinskia at gcc dot gnu.org
2023-12-04 0:34 ` zamazan4ik at tut dot by
2023-12-04 2:37 ` pinskia at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-12-04 0:27 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112829
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
One way is to simple replace all of the functions in gcov-io.c and implement
them, gcov_open, etc.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug gcov-profile/112829] Dump PGO profiles to a memory buffer
2023-12-03 5:58 [Bug gcov-profile/112829] New: Dump PGO profiles to a memory buffer zamazan4ik at tut dot by
2023-12-04 0:27 ` [Bug gcov-profile/112829] " pinskia at gcc dot gnu.org
@ 2023-12-04 0:34 ` zamazan4ik at tut dot by
2023-12-04 2:37 ` pinskia at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: zamazan4ik at tut dot by @ 2023-12-04 0:34 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112829
--- Comment #2 from Alexander Zaitsev <zamazan4ik at tut dot by> ---
Am I right that right now in GCC there are no ready-to-use alternatives to "int
__llvm_profile_write_buffer(char *Buffer)" from LLVM and it should be
implemented somehow manually (as you described)?
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug gcov-profile/112829] Dump PGO profiles to a memory buffer
2023-12-03 5:58 [Bug gcov-profile/112829] New: Dump PGO profiles to a memory buffer zamazan4ik at tut dot by
2023-12-04 0:27 ` [Bug gcov-profile/112829] " pinskia at gcc dot gnu.org
2023-12-04 0:34 ` zamazan4ik at tut dot by
@ 2023-12-04 2:37 ` pinskia at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-12-04 2:37 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112829
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Severity|normal |enhancement
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
GCC does not currently have a way. Though I suspect one of the reasons is that
for embedded, folks don't use -fprofile-generate/-fprofile-use that much or
they use a simulator which then has direct access to the host machine to
generate the files.
I Know for Octeon SE (MIPS baremetal interface on the Cavium Octeon) that they
had a way to do this using memory dump but it was hooked up outside of gcov and
in newlib instead.
I do think this is a good idea for embedded env but I am not sure if anyone who
is interested in doing it. for Linux env, using nfs mount and
-fprofile-dir=/-fprofile-prefix-map=/-fprofile-prefix-path= is one way of doing
it.
Also if you are using Zephyr, it does handle the writes and does the store to
memory and such too. See
https://docs.zephyrproject.org/latest/develop/test/coverage.html .
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-12-04 2:37 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-03 5:58 [Bug gcov-profile/112829] New: Dump PGO profiles to a memory buffer zamazan4ik at tut dot by
2023-12-04 0:27 ` [Bug gcov-profile/112829] " pinskia at gcc dot gnu.org
2023-12-04 0:34 ` zamazan4ik at tut dot by
2023-12-04 2:37 ` pinskia at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).