Fix copyright comments and file comments.
[deliverable/binutils-gdb.git] / gprof / gmon.h
index 0e6c93f2612ea49c0981bc962ab337487dc2a054..541fa4dbdf991748cff380c02fa320a06e32cb14 100644 (file)
 #ifndef gmon_h
 #define gmon_h
 
-struct raw_phdr {
-    char low_pc[sizeof(bfd_vma)];      /* base pc address of sample buffer */
-    char high_pc[sizeof(bfd_vma)];     /* max pc address of sampled buffer */
+struct raw_phdr
+  {
+    /* FIXME: Checking a host compiler define means that we can't use
+       a cross gprof to the alpha.  */
+#ifdef __alpha__
+    char low_pc[8];            /* base pc address of sample buffer */
+    char high_pc[8];           /* max pc address of sampled buffer */
+#else
+    char low_pc[4];            /* base pc address of sample buffer */
+    char high_pc[4];           /* max pc address of sampled buffer */
+#endif
+    char ncnt[4];              /* size of sample buffer (plus this header) */
+
+    char version[4];           /* version number */
+    char profrate[4];          /* profiling clock rate */
+    char spare[3*4];           /* reserved */
+  };
+
+#define GMONVERSION     0x00051879
+
+struct old_raw_phdr
+  {
+    /* FIXME: Checking a host compiler define means that we can't use
+       a cross gprof to the alpha.  */
+#ifdef __alpha__
+    char low_pc[8];            /* base pc address of sample buffer */
+    char high_pc[8];           /* max pc address of sampled buffer */
+#else
+    char low_pc[4];            /* base pc address of sample buffer */
+    char high_pc[4];           /* max pc address of sampled buffer */
+#endif
     char ncnt[4];              /* size of sample buffer (plus this header) */
-#ifdef __osf__
+
+    /* FIXME: Checking host compiler defines here means that we can't
+       use a cross gprof alpha OSF.  */
+#if defined (__alpha__) && defined (__osf__)
     /*
      * DEC's OSF v3.0 uses 4 bytes of padding to bring the header to
      * a size that is a multiple of 8.
      */
     char pad[4];
 #endif
-};
+  };
 
 /*
  * Histogram counters are unsigned shorts:
@@ -65,17 +96,17 @@ struct raw_phdr {
  * Given MIN_SUBR_SEPARATION bytes of separation the value of
  * HASHFRACTION is calculated as:
  *
- *     HASHFRACTION = MIN_SUBR_SEPARATION / (2 * sizeof(short) - 1);
+ *      HASHFRACTION = MIN_SUBR_SEPARATION / (2 * sizeof(short) - 1);
  *
  * For the VAX, the shortest two call sequence is:
  *
- *     calls   $0,(r0)
- *     calls   $0,(r0)
+ *      calls   $0,(r0)
+ *      calls   $0,(r0)
  *
  * which is separated by only three bytes, thus HASHFRACTION is 
  * calculated as:
  *
- *     HASHFRACTION = 3 / (2 * 2 - 1) = 1
+ *      HASHFRACTION = 3 / (2 * 2 - 1) = 1
  *
  * Note that the division above rounds down, thus if MIN_SUBR_FRACTION
  * is less than three, this algorithm will not work!
@@ -88,11 +119,12 @@ struct raw_phdr {
 #define ARCDENSITY     2
 #define MINARCS                50
 
-struct tostruct {
-    char               *selfpc;
-    int                        count;
-    unsigned short     link;
-};
+struct tostruct
+  {
+    char *selfpc;
+    int count;
+    unsigned short link;
+  };
 
 /*
  * A raw arc, with pointers to the calling site and the called site
@@ -100,11 +132,20 @@ struct tostruct {
  * as to get a packed representation (otherwise, different compilers
  * might introduce different padding):
  */
-struct raw_arc {
-    char from_pc[sizeof(bfd_vma)];
-    char self_pc[sizeof(bfd_vma)];
-    char count[sizeof(long)];
-};
+struct raw_arc
+  {
+    /* FIXME: Checking a host compiler define means that we can't use
+       a cross gprof to the alpha.  */
+#ifdef __alpha__
+    char from_pc[8];
+    char self_pc[8];
+    char count[8];
+#else
+    char from_pc[4];
+    char self_pc[4];
+    char count[4];
+#endif
+  };
 
 /*
  * General rounding functions:
This page took 0.024307 seconds and 4 git commands to generate.