https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64123
--- Comment #12 from Jan Hubicka <hubicka at gcc dot gnu.org> --- BTW the following fix the issue for me Index: gcov-io.c =================================================================== --- gcov-io.c (revision 220230) +++ gcov-io.c (working copy) @@ -39,7 +39,7 @@ static void gcov_allocate (unsigned); /* Optimum number of gcov_unsigned_t's read from or written to disk. */ #define GCOV_BLOCK_SIZE (1 << 10) -GCOV_LINKAGE ATTRIBUTE_HIDDEN struct gcov_var +struct gcov_var { FILE *file; gcov_position_t start; /* Position of first byte of block */ indeed we are mixing up the gcov-io routines from wrong unit via wrong mergers. I suppose either we need to pass the io routine as parameter by pointer or modify gcov_io to actually contain indexes into merge routine list instead of direct pointers?