OSDN Git Service

PR 19985
authorjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 2 May 2005 18:01:58 +0000 (18:01 +0000)
committerjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 2 May 2005 18:01:58 +0000 (18:01 +0000)
* gcov-io.h: Declare gcov external functions hidden.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99109 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/gcov-io.h

index 641754b..d3d7f07 100644 (file)
@@ -1,3 +1,8 @@
+2005-05-02  Janis Johnson  <janis187@us.ibm.com>
+
+       PR 19985
+       * gcov-io.h: Declare gcov external functions hidden.
+
 2005-05-02  Kazu Hirata  <kazu@cs.umass.edu>
 
        * tree-ssa-uncprop.c (equiv_hash_elt, remove_equivalence,
index 798375e..b7492d7 100644 (file)
@@ -225,11 +225,15 @@ typedef HOST_WIDEST_INT gcov_type;
 
 #endif /* !IN_LIBGCOV */
 
-/* In gcov we want function linkage to be static. In libgcov we need
-   these functions to be extern, so prefix them with __gcov.  In the
-   compiler we want it extern, so that they can be accessed from
-   elsewhere.  */
+/* In gcov we want function linkage to be static.  In the compiler we want
+   it extern, so that they can be accessed from elsewhere.  In libgcov we
+   need these functions to be extern, so prefix them with __gcov.  In
+   libgcov they must also be hidden so that the instance in the executable
+   is not also used in a DSO.  */
 #if IN_LIBGCOV
+
+#include "auto-host.h"   /* for HAVE_GAS_HIDDEN */
+
 #define gcov_var __gcov_var
 #define gcov_open __gcov_open
 #define gcov_close __gcov_close
@@ -249,6 +253,16 @@ typedef HOST_WIDEST_INT gcov_type;
 #pragma GCC poison gcov_write_string gcov_write_tag gcov_write_length
 #pragma GCC poison gcov_read_string gcov_sync gcov_time gcov_magic
 
+#ifdef HAVE_GAS_HIDDEN
+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
+#else
+#define ATTRIBUTE_HIDDEN
+#endif
+
+#else
+
+#define ATTRIBUTE_HIDDEN
+
 #endif
 
 #ifndef GCOV_LINKAGE
@@ -428,20 +442,20 @@ struct gcov_info
 };
 
 /* Register a new object file module.  */
-extern void __gcov_init (struct gcov_info *);
+extern void __gcov_init (struct gcov_info *) ATTRIBUTE_HIDDEN;
 
 /* Called before fork, to avoid double counting.  */
-extern void __gcov_flush (void);
+extern void __gcov_flush (void) ATTRIBUTE_HIDDEN;
 
 /* The merge function that just sums the counters.  */
-extern void __gcov_merge_add (gcov_type *, unsigned);
+extern void __gcov_merge_add (gcov_type *, unsigned) ATTRIBUTE_HIDDEN;
 
 /* The merge function to choose the most common value.  */
-extern void __gcov_merge_single (gcov_type *, unsigned);
+extern void __gcov_merge_single (gcov_type *, unsigned) ATTRIBUTE_HIDDEN;
 
 /* The merge function to choose the most common difference between
    consecutive values.  */
-extern void __gcov_merge_delta (gcov_type *, unsigned);
+extern void __gcov_merge_delta (gcov_type *, unsigned) ATTRIBUTE_HIDDEN;
 
 /* The profiler functions.  */
 extern void __gcov_interval_profiler (gcov_type *, gcov_type, int, unsigned); 
@@ -451,12 +465,13 @@ extern void __gcov_one_value_profiler (gcov_type *, gcov_type);
 #ifndef inhibit_libc
 /* The wrappers around some library functions..  */
 extern pid_t __gcov_fork (void);
-extern int __gcov_execl (const char *, const char *, ...);
-extern int __gcov_execlp (const char *, const char *, ...);
-extern int __gcov_execle (const char *,  const char *, ...);
-extern int __gcov_execv (const char *, char *const []);
-extern int __gcov_execvp (const char *, char *const []);
-extern int __gcov_execve (const char *, char  *const [], char *const []);
+extern int __gcov_execl (const char *, const char *, ...) ATTRIBUTE_HIDDEN;
+extern int __gcov_execlp (const char *, const char *, ...) ATTRIBUTE_HIDDEN;
+extern int __gcov_execle (const char *,  const char *, ...) ATTRIBUTE_HIDDEN;
+extern int __gcov_execv (const char *, char *const []) ATTRIBUTE_HIDDEN;
+extern int __gcov_execvp (const char *, char *const []) ATTRIBUTE_HIDDEN;
+extern int __gcov_execve (const char *, char  *const [], char *const [])
+  ATTRIBUTE_HIDDEN;
 #endif
 
 #endif /* IN_LIBGCOV */
@@ -488,7 +503,7 @@ GCOV_LINKAGE struct gcov_var
   size_t alloc;
   gcov_unsigned_t *buffer;
 #endif
-} gcov_var;
+} gcov_var ATTRIBUTE_HIDDEN;
 
 /* Functions for reading and writing gcov files. In libgcov you can
    open the file for reading then writing. Elsewhere you can open the
@@ -500,29 +515,31 @@ GCOV_LINKAGE struct gcov_var
    functions for writing.  Your file may become corrupted if you break
    these invariants.  */
 #if IN_LIBGCOV
-GCOV_LINKAGE int gcov_open (const char */*name*/);
+GCOV_LINKAGE int gcov_open (const char */*name*/) ATTRIBUTE_HIDDEN;
 #else
 GCOV_LINKAGE int gcov_open (const char */*name*/, int /*direction*/);
 GCOV_LINKAGE int gcov_magic (gcov_unsigned_t, gcov_unsigned_t);
 #endif
-GCOV_LINKAGE int gcov_close (void);
+GCOV_LINKAGE int gcov_close (void) ATTRIBUTE_HIDDEN;
 
 /* Available everywhere.  */
 static gcov_position_t gcov_position (void);
 static int gcov_is_error (void);
 
-GCOV_LINKAGE gcov_unsigned_t gcov_read_unsigned (void);
-GCOV_LINKAGE gcov_type gcov_read_counter (void);
-GCOV_LINKAGE void gcov_read_summary (struct gcov_summary *);
+GCOV_LINKAGE gcov_unsigned_t gcov_read_unsigned (void) ATTRIBUTE_HIDDEN;
+GCOV_LINKAGE gcov_type gcov_read_counter (void) ATTRIBUTE_HIDDEN;
+GCOV_LINKAGE void gcov_read_summary (struct gcov_summary *) ATTRIBUTE_HIDDEN;
 
 #if IN_LIBGCOV
 /* Available only in libgcov */
-GCOV_LINKAGE void gcov_write_counter (gcov_type);
-GCOV_LINKAGE void gcov_write_tag_length (gcov_unsigned_t, gcov_unsigned_t);
+GCOV_LINKAGE void gcov_write_counter (gcov_type) ATTRIBUTE_HIDDEN;
+GCOV_LINKAGE void gcov_write_tag_length (gcov_unsigned_t, gcov_unsigned_t)
+    ATTRIBUTE_HIDDEN;
 GCOV_LINKAGE void gcov_write_summary (gcov_unsigned_t /*tag*/,
-                                     const struct gcov_summary *);
+                                     const struct gcov_summary *)
+    ATTRIBUTE_HIDDEN;
 static void gcov_rewrite (void);
-GCOV_LINKAGE void gcov_seek (gcov_position_t /*position*/);
+GCOV_LINKAGE void gcov_seek (gcov_position_t /*position*/) ATTRIBUTE_HIDDEN;
 #else
 /* Available outside libgcov */
 GCOV_LINKAGE const char *gcov_read_string (void);
@@ -532,7 +549,7 @@ GCOV_LINKAGE void gcov_sync (gcov_position_t /*base*/,
 
 #if !IN_GCOV
 /* Available outside gcov */
-GCOV_LINKAGE void gcov_write_unsigned (gcov_unsigned_t);
+GCOV_LINKAGE void gcov_write_unsigned (gcov_unsigned_t) ATTRIBUTE_HIDDEN;
 #endif
 
 #if !IN_GCOV && !IN_LIBGCOV