Hi Alex, On 06/25/2018 08:19 AM, Alex Bennée wrote: > As we don't always take the normal exit path when running a guest we > can skip the normal exit destructors where gcov normally dumps it's > info. The GCC manual suggests long running programs use __gcov_dump() > to flush out the coverage state periodically so we use that here.
Shouldn't we also check for this symbol in the ./configure script? > > Signed-off-by: Alex Bennée <alex.ben...@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org> > --- > linux-user/exit.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/linux-user/exit.c b/linux-user/exit.c > index aed8713fae..14e94e28fa 100644 > --- a/linux-user/exit.c > +++ b/linux-user/exit.c > @@ -19,10 +19,17 @@ > #include "qemu/osdep.h" > #include "qemu.h" > > +#ifdef CONFIG_GCOV > +extern void __gcov_dump(void); > +#endif > + > void preexit_cleanup(CPUArchState *env, int code) > { > #ifdef TARGET_GPROF > _mcleanup(); > +#endif > +#ifdef CONFIG_GCOV > + __gcov_dump(); > #endif > gdb_exit(env, code); > } >