Index: libgcc/Makefile.in
===================================================================
--- libgcc/Makefile.in	(revision 213384)
+++ libgcc/Makefile.in	(working copy)
@@ -852,13 +852,15 @@ include $(iterator)
 
 # Build libgcov components.
 
-LIBGCOV_MERGE = _gcov_merge_add _gcov_merge_single _gcov_merge_delta _gcov_merge_ior \
-     _gcov_merge_time_profile
-LIBGCOV_PROFILER = _gcov_interval_profiler _gcov_pow2_profiler _gcov_one_value_profiler \
-    _gcov_indirect_call_profiler _gcov_average_profiler _gcov_ior_profiler \
-    _gcov_indirect_call_profiler_v2 _gcov_time_profiler
-LIBGCOV_INTERFACE = _gcov_flush _gcov_fork _gcov_execl _gcov_execlp _gcov_execle \
-    _gcov_execv _gcov_execvp _gcov_execve _gcov_reset _gcov_dump
+LIBGCOV_MERGE = _gcov_merge_add _gcov_merge_single _gcov_merge_delta	\
+	_gcov_merge_ior _gcov_merge_time_profile
+LIBGCOV_PROFILER = _gcov_interval_profiler _gcov_pow2_profiler		\
+	_gcov_one_value_profiler _gcov_indirect_call_profiler		\
+ 	_gcov_average_profiler _gcov_ior_profiler			\
+	_gcov_indirect_call_profiler_v2 _gcov_time_profiler
+LIBGCOV_INTERFACE = _gcov_flush _gcov_fork _gcov_execl _gcov_execlp    \
+	_gcov_execle _gcov_execv _gcov_execvp _gcov_execve _gcov_reset \
+	_gcov_dump
 LIBGCOV_DRIVER = _gcov 
 
 libgcov-merge-objects = $(patsubst %,%$(objext),$(LIBGCOV_MERGE))
Index: libgcc/libgcov-driver.c
===================================================================
--- libgcc/libgcov-driver.c	(revision 213384)
+++ libgcc/libgcov-driver.c	(working copy)
@@ -775,6 +775,7 @@ gcov_do_dump (struct gcov_info *list, in
   free (gf.filename);
 }
 
+#if !IN_GCOV_TOOL
 void
 gcov_exit (void)
 {
@@ -840,6 +841,6 @@ __gcov_init (struct gcov_info *info)
     }
   info->version = 0;
 }
-
+#endif /* !IN_GCOV_TOOL */
 #endif /* L_gcov */
 #endif /* inhibit_libc */
Index: libgcc/libgcov-interface.c
===================================================================
--- libgcc/libgcov-interface.c	(revision 213384)
+++ libgcc/libgcov-interface.c	(working copy)
@@ -44,20 +44,21 @@ void __gcov_dump (void) {}
 
 extern void gcov_clear (void) ATTRIBUTE_HIDDEN;
 extern void gcov_exit (void) ATTRIBUTE_HIDDEN;
+extern __gthread_mutex_t __gcov_flush_mx ATTRIBUTE_HIDDEN;
 
 #ifdef L_gcov_flush
-
 #ifdef __GTHREAD_MUTEX_INIT
-ATTRIBUTE_HIDDEN __gthread_mutex_t __gcov_flush_mx = __GTHREAD_MUTEX_INIT;
+__gthread_mutex_t __gcov_flush_mx = __GTHREAD_MUTEX_INIT;
 #define init_mx_once()
 #else
-__gthread_mutex_t __gcov_flush_mx ATTRIBUTE_HIDDEN;
+__gthread_mutex_t __gcov_flush_mx;
 
 static void
 init_mx (void)
 {
   __GTHREAD_MUTEX_INIT_FUNCTION (&__gcov_flush_mx);
 }
+
 static void
 init_mx_once (void)
 {
@@ -160,8 +161,8 @@ __gcov_execl (const char *path, char *ar
 #endif
 
 #ifdef L_gcov_execlp
-/* A wrapper for the execlp function.  Flushes the accumulated profiling data, so
-   that they are not lost.  */
+/* A wrapper for the execlp function.  Flushes the accumulated
+   profiling data, so that they are not lost.  */
 
 int
 __gcov_execlp (const char *path, char *arg, ...)
@@ -191,8 +192,8 @@ __gcov_execlp (const char *path, char *a
 #endif
 
 #ifdef L_gcov_execle
-/* A wrapper for the execle function.  Flushes the accumulated profiling data, so
-   that they are not lost.  */
+/* A wrapper for the execle function.  Flushes the accumulated
+   profiling data, so that they are not lost.  */
 
 int
 __gcov_execle (const char *path, char *arg, ...)
@@ -224,8 +225,8 @@ __gcov_execle (const char *path, char *a
 #endif
 
 #ifdef L_gcov_execv
-/* A wrapper for the execv function.  Flushes the accumulated profiling data, so
-   that they are not lost.  */
+/* A wrapper for the execv function.  Flushes the accumulated
+   profiling data, so that they are not lost.  */
 
 int
 __gcov_execv (const char *path, char *const argv[])
@@ -236,8 +237,8 @@ __gcov_execv (const char *path, char *co
 #endif
 
 #ifdef L_gcov_execvp
-/* A wrapper for the execvp function.  Flushes the accumulated profiling data, so
-   that they are not lost.  */
+/* A wrapper for the execvp function.  Flushes the accumulated
+   profiling data, so that they are not lost.  */
 
 int
 __gcov_execvp (const char *path, char *const argv[])
@@ -248,8 +249,8 @@ __gcov_execvp (const char *path, char *c
 #endif
 
 #ifdef L_gcov_execve
-/* A wrapper for the execve function.  Flushes the accumulated profiling data, so
-   that they are not lost.  */
+/* A wrapper for the execve function.  Flushes the accumulated
+   profiling data, so that they are not lost.  */
 
 int
 __gcov_execve (const char *path, char *const argv[], char *const envp[])
