OSDN Git Service

From Jie Zhang <jie.zhang@analog.com>:
[pf3gnuchains/gcc-fork.git] / gcc / gcov-io.h
index 045f665..f4fe279 100644 (file)
@@ -1,6 +1,6 @@
 /* File format for coverage information
    Copyright (C) 1996, 1997, 1998, 2000, 2002,
 /* File format for coverage information
    Copyright (C) 1996, 1997, 1998, 2000, 2002,
-   2003, 2004, 2005 Free Software Foundation, Inc.
+   2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
    Contributed by Bob Manson <manson@cygnus.com>.
    Completely remangled by Nathan Sidwell <nathan@codesourcery.com>.
 
    Contributed by Bob Manson <manson@cygnus.com>.
    Completely remangled by Nathan Sidwell <nathan@codesourcery.com>.
 
@@ -8,7 +8,7 @@ This file is part of GCC.
 
 GCC is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
 
 GCC is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 2, or (at your option) any later
+Software Foundation; either version 3, or (at your option) any later
 version.
 
 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
 version.
 
 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -16,17 +16,15 @@ WARRANTY; without even the implied warranty of MERCHANTABILITY or
 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 for more details.
 
 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 for more details.
 
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING.  If not, write to the Free
-Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301, USA.  */
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+<http://www.gnu.org/licenses/>.  */
 
 
-/* As a special exception, if you link this library with other files,
-   some of which are compiled with GCC, to produce an executable,
-   this library does not by itself cause the resulting executable
-   to be covered by the GNU General Public License.
-   This exception does not however invalidate any other reasons why
-   the executable file might be covered by the GNU General Public License.  */
 
 /* Coverage information is held in two files.  A notes file, which is
    generated by the compiler, and a data file, which is generated by
 
 /* Coverage information is held in two files.  A notes file, which is
    generated by the compiler, and a data file, which is generated by
@@ -195,7 +193,7 @@ typedef signed gcov_type __attribute__ ((mode (QI)));
 #endif
 
 
 #endif
 
 
-#if defined (TARGET_HAS_F_SETLKW)
+#if defined (TARGET_POSIX_IO)
 #define GCOV_LOCKED 1
 #else
 #define GCOV_LOCKED 0
 #define GCOV_LOCKED 1
 #else
 #define GCOV_LOCKED 0
@@ -327,23 +325,33 @@ typedef HOST_WIDEST_INT gcov_type;
 #define GCOV_COUNTER_V_SINGLE  3  /* The most common value of expression.  */
 #define GCOV_COUNTER_V_DELTA   4  /* The most common difference between
                                      consecutive values of expression.  */
 #define GCOV_COUNTER_V_SINGLE  3  /* The most common value of expression.  */
 #define GCOV_COUNTER_V_DELTA   4  /* The most common difference between
                                      consecutive values of expression.  */
-#define GCOV_LAST_VALUE_COUNTER 4  /* The last of counters used for value
+
+#define GCOV_COUNTER_V_INDIR   5  /* The most common indirect address */
+#define GCOV_COUNTER_AVERAGE   6  /* Compute average value passed to the
+                                     counter.  */
+#define GCOV_COUNTER_IOR       7  /* IOR of the all values passed to
+                                     counter.  */
+#define GCOV_LAST_VALUE_COUNTER 7  /* The last of counters used for value
                                      profiling.  */
                                      profiling.  */
-#define GCOV_COUNTERS          5
+#define GCOV_COUNTERS          8
 
 /* Number of counters used for value profiling.  */
 #define GCOV_N_VALUE_COUNTERS \
   (GCOV_LAST_VALUE_COUNTER - GCOV_FIRST_VALUE_COUNTER + 1)
   
   /* A list of human readable names of the counters */
 
 /* Number of counters used for value profiling.  */
 #define GCOV_N_VALUE_COUNTERS \
   (GCOV_LAST_VALUE_COUNTER - GCOV_FIRST_VALUE_COUNTER + 1)
   
   /* A list of human readable names of the counters */
-#define GCOV_COUNTER_NAMES     {"arcs", "interval", "pow2", "single", "delta"}
+#define GCOV_COUNTER_NAMES     {"arcs", "interval", "pow2", "single", \
+                                "delta","indirect_call", "average", "ior"}
   
   /* Names of merge functions for counters.  */
 #define GCOV_MERGE_FUNCTIONS   {"__gcov_merge_add",    \
                                 "__gcov_merge_add",    \
                                 "__gcov_merge_add",    \
                                 "__gcov_merge_single", \
   
   /* Names of merge functions for counters.  */
 #define GCOV_MERGE_FUNCTIONS   {"__gcov_merge_add",    \
                                 "__gcov_merge_add",    \
                                 "__gcov_merge_add",    \
                                 "__gcov_merge_single", \
-                                "__gcov_merge_delta"}
+                                "__gcov_merge_delta",  \
+                                "__gcov_merge_single", \
+                                "__gcov_merge_add",    \
+                                "__gcov_merge_ior"}
   
 /* Convert a counter index to a tag.  */
 #define GCOV_TAG_FOR_COUNTER(COUNT)                            \
   
 /* Convert a counter index to a tag.  */
 #define GCOV_TAG_FOR_COUNTER(COUNT)                            \
@@ -457,17 +465,23 @@ extern void __gcov_merge_single (gcov_type *, unsigned) ATTRIBUTE_HIDDEN;
    consecutive values.  */
 extern void __gcov_merge_delta (gcov_type *, unsigned) ATTRIBUTE_HIDDEN;
 
    consecutive values.  */
 extern void __gcov_merge_delta (gcov_type *, unsigned) ATTRIBUTE_HIDDEN;
 
+/* The merge function that just ors the counters together.  */
+extern void __gcov_merge_ior (gcov_type *, unsigned) ATTRIBUTE_HIDDEN;
+
 /* The profiler functions.  */
 extern void __gcov_interval_profiler (gcov_type *, gcov_type, int, unsigned); 
 extern void __gcov_pow2_profiler (gcov_type *, gcov_type);
 extern void __gcov_one_value_profiler (gcov_type *, gcov_type);
 /* The profiler functions.  */
 extern void __gcov_interval_profiler (gcov_type *, gcov_type, int, unsigned); 
 extern void __gcov_pow2_profiler (gcov_type *, gcov_type);
 extern void __gcov_one_value_profiler (gcov_type *, gcov_type);
+extern void __gcov_indirect_call_profiler (gcov_type *, gcov_type, void *, void *);
+extern void __gcov_average_profiler (gcov_type *, gcov_type);
+extern void __gcov_ior_profiler (gcov_type *, gcov_type);
 
 #ifndef inhibit_libc
 /* The wrappers around some library functions..  */
 
 #ifndef inhibit_libc
 /* The wrappers around some library functions..  */
-extern pid_t __gcov_fork (void);
-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 pid_t __gcov_fork (void) ATTRIBUTE_HIDDEN;
+extern int __gcov_execl (const char *, char *, ...) ATTRIBUTE_HIDDEN;
+extern int __gcov_execlp (const char *, char *, ...) ATTRIBUTE_HIDDEN;
+extern int __gcov_execle (const char *, 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 [])
 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 [])