OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [binutils-2.18.50/] [gprof/] [utils.c] - Diff between revs 156 and 816

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 156 Rev 816
/*
/*
 * Copyright (c) 1983, 1993, 2001
 * Copyright (c) 1983, 1993, 2001
 *      The Regents of the University of California.  All rights reserved.
 *      The Regents of the University of California.  All rights reserved.
 *
 *
 * Redistribution and use in source and binary forms, with or without
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * modification, are permitted provided that the following conditions
 * are met:
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *    without specific prior written permission.
 *
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * SUCH DAMAGE.
 */
 */
#include "demangle.h"
#include "demangle.h"
#include "gprof.h"
#include "gprof.h"
#include "search_list.h"
#include "search_list.h"
#include "source.h"
#include "source.h"
#include "symtab.h"
#include "symtab.h"
#include "cg_arcs.h"
#include "cg_arcs.h"
#include "utils.h"
#include "utils.h"
#include "corefile.h"
#include "corefile.h"
 
 
 
 
/*
/*
 * Print name of symbol.  Return number of characters printed.
 * Print name of symbol.  Return number of characters printed.
 */
 */
int
int
print_name_only (Sym *self)
print_name_only (Sym *self)
{
{
  const char *name = self->name;
  const char *name = self->name;
  const char *filename;
  const char *filename;
  char *demangled = 0;
  char *demangled = 0;
  char buf[PATH_MAX];
  char buf[PATH_MAX];
  int size = 0;
  int size = 0;
 
 
  if (name)
  if (name)
    {
    {
      if (!bsd_style_output && demangle)
      if (!bsd_style_output && demangle)
        {
        {
          demangled = bfd_demangle (core_bfd, name, DMGL_ANSI | DMGL_PARAMS);
          demangled = bfd_demangle (core_bfd, name, DMGL_ANSI | DMGL_PARAMS);
          if (demangled)
          if (demangled)
            name = demangled;
            name = demangled;
        }
        }
      printf ("%s", name);
      printf ("%s", name);
      size = strlen (name);
      size = strlen (name);
      if (line_granularity && self->file)
      if (line_granularity && self->file)
        {
        {
          filename = self->file->name;
          filename = self->file->name;
          if (!print_path)
          if (!print_path)
            {
            {
              filename = strrchr (filename, '/');
              filename = strrchr (filename, '/');
              if (filename)
              if (filename)
                {
                {
                  ++filename;
                  ++filename;
                }
                }
              else
              else
                {
                {
                  filename = self->file->name;
                  filename = self->file->name;
                }
                }
            }
            }
          sprintf (buf, " (%s:%d @ %lx)", filename, self->line_num,
          sprintf (buf, " (%s:%d @ %lx)", filename, self->line_num,
                   (unsigned long) self->addr);
                   (unsigned long) self->addr);
          printf ("%s", buf);
          printf ("%s", buf);
          size += strlen (buf);
          size += strlen (buf);
        }
        }
      if (demangled)
      if (demangled)
        {
        {
          free (demangled);
          free (demangled);
        }
        }
      DBG (DFNDEBUG, printf ("{%d} ", self->cg.top_order));
      DBG (DFNDEBUG, printf ("{%d} ", self->cg.top_order));
      DBG (PROPDEBUG, printf ("%4.0f%% ", 100.0 * self->cg.prop.fract));
      DBG (PROPDEBUG, printf ("%4.0f%% ", 100.0 * self->cg.prop.fract));
    }
    }
  return size;
  return size;
}
}
 
 
 
 
void
void
print_name (Sym *self)
print_name (Sym *self)
{
{
  print_name_only (self);
  print_name_only (self);
 
 
  if (self->cg.cyc.num != 0)
  if (self->cg.cyc.num != 0)
    {
    {
      printf (_(" <cycle %d>"), self->cg.cyc.num);
      printf (_(" <cycle %d>"), self->cg.cyc.num);
    }
    }
  if (self->cg.index != 0)
  if (self->cg.index != 0)
    {
    {
      if (self->cg.print_flag)
      if (self->cg.print_flag)
        {
        {
          printf (" [%d]", self->cg.index);
          printf (" [%d]", self->cg.index);
        }
        }
      else
      else
        {
        {
          printf (" (%d)", self->cg.index);
          printf (" (%d)", self->cg.index);
        }
        }
    }
    }
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.