gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gprof / bb_exit_func.c
index 813321566c72c1b59b3ce5dc652f38b6e008fdf9..2c1f24dfb4880ceb4577017e57d9de1835af88ae 100644 (file)
@@ -1,78 +1,93 @@
-/*
- * Copyright (c) 1994 David Mosberger-Tang.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Library General Public License as
- * published by the Free Software Foundation; either version 2, or (at
- * your option) any later version.
- *
- * __bb_exit_func() dumps all the basic-block statistics linked into
- * the bb_head chain to .d files.
- */
+/*  bb_exit_func.c - dumps all the basic-block statistics linked into
+    the bb_head chain to .d files.
+
+   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+
+   This file is part of GNU Binutils.
+
+   This program 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 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or 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 this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.
+
+   This code was contributed by:
+
+     David Mosberger-Tang <David.Mosberger@acm.org>  */
+\f
 #include <stdio.h>
 #include <strings.h>
 #include "bfd.h"
 #include "gmon_out.h"
 
 /* structure emitted by -a */
-struct bb {
-    long               zero_word;
-    const char         *filename;
-    long               *counts;
-    long               ncounts;
-    struct bb          *next;
-    const unsigned long        *addresses;
+struct bb
+{
+  long zero_word;
+  const char *filename;
+  long *counts;
+  long ncounts;
+  struct bb *next;
+  const unsigned long *addresses;
 };
 
-struct bb *__bb_head = (struct bb *)0;
+struct bb *__bb_head = (struct bb *) 0;
 
 
 void
-__bb_exit_func (void)
+__bb_exit_func ()
 {
-    const int version = GMON_VERSION;
-    struct gmon_hdr ghdr;
-    struct bb *ptr;
-    FILE *fp;
-    /*
-     * GEN_GMON_CNT_FILE should be defined on systems with mcleanup()
-     * functions that do not write basic-block to gmon.out.  In such
-     * cases profiling with "-pg -a" would result in a gmon.out file
-     * without basic-block info (because the file written here would
-     * be overwritten.  Thus, a separate file is generated instead.
-     * The two files can easily be combined by specifying them
-     * on gprof's command line (and possibly generating a gmon.sum
-     * file with "gprof -s").
-     */
+  const int version = GMON_VERSION;
+  struct gmon_hdr ghdr;
+  struct bb *ptr;
+  FILE *fp;
+  /* GEN_GMON_CNT_FILE should be defined on systems with mcleanup()
+     functions that do not write basic-block to gmon.out.  In such
+     cases profiling with "-pg -a" would result in a gmon.out file
+     without basic-block info (because the file written here would be
+     overwritten.  Thus, a separate file is generated instead.  The
+     two files can easily be combined by specifying them on gprof's
+     command line (and possibly generating a gmon.sum file with "gprof
+     -s"). */
 #ifndef GEN_GMON_CNT_FILE
 #   define OUT_NAME    "gmon.out"
 #else
 #   define OUT_NAME    "gmon.cnt"
 #endif
-    fp = fopen(OUT_NAME, "wb");
-    if (!fp) {
-       perror(OUT_NAME);
-       return;
-    } /* if */
-    memcpy(&ghdr.cookie[0], GMON_MAGIC, 4);
-    memcpy(&ghdr.version, &version, sizeof(version));
-    fwrite(&ghdr, sizeof(ghdr), 1, fp);
-
-    for (ptr = __bb_head; ptr != 0; ptr = ptr->next) {
-       u_int ncounts = ptr->ncounts;
-       u_char tag;
-       u_int i;
+  fp = fopen (OUT_NAME, "wb");
+  if (!fp)
+    {
+      perror (OUT_NAME);
+      return;
+    }
+  memcpy (&ghdr.cookie[0], GMON_MAGIC, 4);
+  memcpy (&ghdr.version, &version, sizeof (version));
+  fwrite (&ghdr, sizeof (ghdr), 1, fp);
 
-       tag = GMON_TAG_BB_COUNT;
-       fwrite(&tag, sizeof(tag), 1, fp);
-       fwrite(&ncounts, sizeof(ncounts), 1, fp);
+  for (ptr = __bb_head; ptr != 0; ptr = ptr->next)
+    {
+      u_int ncounts = ptr->ncounts;
+      u_char tag;
+      u_int i;
 
-       for (i = 0; i < ncounts; ++i) {
-           fwrite(&ptr->addresses[i], sizeof(ptr->addresses[0]), 1, fp);
-           fwrite(&ptr->counts[i], sizeof(ptr->counts[0]), 1, fp);
-       } /* for */
-    } /* for */
-    fclose (fp);
-} /* __bb_exit_func */
+      tag = GMON_TAG_BB_COUNT;
+      fwrite (&tag, sizeof (tag), 1, fp);
+      fwrite (&ncounts, sizeof (ncounts), 1, fp);
 
-                       /*** end of __bb_exit_func.c ***/
+      for (i = 0; i < ncounts; ++i)
+       {
+         fwrite (&ptr->addresses[i], sizeof (ptr->addresses[0]), 1, fp);
+         fwrite (&ptr->counts[i], sizeof (ptr->counts[0]), 1, fp);
+       }
+    }
+  fclose (fp);
+}
This page took 0.02557 seconds and 4 git commands to generate.