home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright (c) 1983 Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that: (1) source distributions retain this entire copyright
- * notice and comment, and (2) distributions including binaries display
- * the following acknowledgement: ``This product includes software
- * developed by the University of California, Berkeley and its contributors''
- * in the documentation or other materials provided with the distribution
- * and in all advertising materials mentioning features or use of this
- * software. Neither the name of the University nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
- #include <demangle.h>
- #include "gprof.h"
- #include "cg_arcs.h"
- #include "symtab.h"
-
-
- /*
- * Print name of symbol. Return number of characters printed.
- */
- int
- DEFUN (print_name_only, (self), Sym * self)
- {
- const char *name = self->name;
- const char *filename;
- char *demangled = 0;
- char buf[PATH_MAX];
- int size = 0;
-
- if (name)
- {
- if (!bsd_style_output)
- {
- if (name[0] == '_' && name[1] && discard_underscores)
- {
- name++;
- }
- demangled = cplus_demangle (name, DMGL_ANSI | DMGL_PARAMS);
- if (demangled)
- {
- name = demangled;
- }
- }
- printf ("%s", name);
- size = strlen (name);
- if (line_granularity && self->file)
- {
- filename = self->file->name;
- if (!print_path)
- {
- filename = strrchr (filename, '/');
- if (filename)
- {
- ++filename;
- }
- else
- {
- filename = self->file->name;
- }
- }
- sprintf (buf, " (%s:%d)", filename, self->line_num);
- printf (buf);
- size += strlen (buf);
- }
- if (demangled)
- {
- free (demangled);
- }
- DBG (DFNDEBUG, printf ("{%d} ", self->cg.top_order));
- DBG (PROPDEBUG, printf ("%4.0f%% ", 100.0 * self->cg.prop.fract));
- }
- return size;
- }
-
-
- void
- DEFUN (print_name, (self), Sym * self)
- {
- print_name_only (self);
-
- if (self->cg.cyc.num != 0)
- {
- printf (" <cycle %d>", self->cg.cyc.num);
- }
- if (self->cg.index != 0)
- {
- if (self->cg.print_flag)
- {
- printf (" [%d]", self->cg.index);
- }
- else
- {
- printf (" (%d)", self->cg.index);
- }
- }
- }
-