From db46bcd377f4b4a26b9807a7cb3565a161178660 Mon Sep 17 00:00:00 2001 From: marxin Date: Tue, 27 Sep 2016 11:07:11 +0000 Subject: gcov: dump in a static dtor instead of in an atexit handler PR gcov-profile/7970 PR gcov-profile/16855 PR gcov-profile/44779 * g++.dg/gcov/pr16855.C: New test. * coverage.c (build_gcov_exit_decl): New function. (coverage_obj_init): Call the function and generate __gcov_exit destructor. * doc/gcov.texi: Document when __gcov_exit function is called. * libgcov-driver.c (__gcov_init): Do not register a atexit handler. (__gcov_exit): Rename from gcov_exit. * libgcov.h (__gcov_exit): Declare. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@240529 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgcc/libgcov-driver.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'libgcc/libgcov-driver.c') diff --git a/libgcc/libgcov-driver.c b/libgcc/libgcov-driver.c index d51397e0f8a..84471bd8162 100644 --- a/libgcc/libgcov-driver.c +++ b/libgcc/libgcov-driver.c @@ -872,8 +872,8 @@ struct gcov_root __gcov_root; struct gcov_master __gcov_master = {GCOV_VERSION, 0}; -static void -gcov_exit (void) +void +__gcov_exit (void) { __gcov_dump_one (&__gcov_root); if (__gcov_root.next) @@ -906,7 +906,6 @@ __gcov_init (struct gcov_info *info) __gcov_master.root->prev = &__gcov_root; __gcov_master.root = &__gcov_root; } - atexit (gcov_exit); } info->next = __gcov_root.list; -- cgit v1.2.1