aboutsummaryrefslogtreecommitdiff
path: root/gprof/bb_exit_func.c
diff options
context:
space:
mode:
Diffstat (limited to 'gprof/bb_exit_func.c')
-rw-r--r--gprof/bb_exit_func.c78
1 files changed, 0 insertions, 78 deletions
diff --git a/gprof/bb_exit_func.c b/gprof/bb_exit_func.c
deleted file mode 100644
index 8133215..0000000
--- a/gprof/bb_exit_func.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * 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.
- */
-#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 *__bb_head = (struct bb *)0;
-
-
-void
-__bb_exit_func (void)
-{
- 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;
-
- tag = GMON_TAG_BB_COUNT;
- fwrite(&tag, sizeof(tag), 1, fp);
- fwrite(&ncounts, sizeof(ncounts), 1, fp);
-
- 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 */
-
- /*** end of __bb_exit_func.c ***/