diff options
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/gcov-io.h | 69 | 
2 files changed, 48 insertions, 26 deletions
| diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 641754b..d3d7f07 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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, diff --git a/gcc/gcov-io.h b/gcc/gcov-io.h index 798375e..b7492d7 100644 --- a/gcc/gcov-io.h +++ b/gcc/gcov-io.h @@ -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 | 
