X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gprof%2Fsource.c;h=93abc85793b5de9022c175c731ef0bdd6314d636;hb=31ce04e9e0ce96e752e2c53dfad5881d24e9f080;hp=30b8278d9957fb3afcbe0faad1b8fa7cba873587;hpb=37503931d0e0114248e20c27c117f326a6e48963;p=deliverable%2Fbinutils-gdb.git diff --git a/gprof/source.c b/gprof/source.c index 30b8278d99..93abc85793 100644 --- a/gprof/source.c +++ b/gprof/source.c @@ -1,12 +1,12 @@ /* source.c - Keep track of source files. - Copyright 2000 Free Software Foundation, Inc. + 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 2 of the License, or + 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, @@ -16,8 +16,8 @@ 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., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ #include "gprof.h" #include "libiberty.h" @@ -28,14 +28,14 @@ #define EXT_ANNO "-ann" /* Postfix of annotated files. */ /* Default option values. */ -bool create_annotation_files = FALSE; +bfd_boolean create_annotation_files = FALSE; Search_List src_search_list = {0, 0}; Source_File *first_src_file = 0; Source_File * -DEFUN (source_file_lookup_path, (path), const char *path) +source_file_lookup_path (const char *path) { Source_File *sf; @@ -44,29 +44,29 @@ DEFUN (source_file_lookup_path, (path), const char *path) if (FILENAME_CMP (path, sf->name) == 0) break; } - + if (!sf) { /* Create a new source file descriptor. */ sf = (Source_File *) xmalloc (sizeof (*sf)); - + memset (sf, 0, sizeof (*sf)); - + sf->name = xstrdup (path); sf->next = first_src_file; first_src_file = sf; } - + return sf; } Source_File * -DEFUN (source_file_lookup_name, (filename), const char *filename) +source_file_lookup_name (const char *filename) { const char *fname; Source_File *sf; - + /* The user cannot know exactly how a filename will be stored in the debugging info (e.g., ../include/foo.h vs. /usr/include/foo.h). So we simply compare the filename @@ -74,7 +74,7 @@ DEFUN (source_file_lookup_name, (filename), const char *filename) for (sf = first_src_file; sf; sf = sf->next) { fname = strrchr (sf->name, '/'); - + if (fname) ++fname; else @@ -83,20 +83,19 @@ DEFUN (source_file_lookup_name, (filename), const char *filename) if (FILENAME_CMP (filename, fname) == 0) break; } - + return sf; } FILE * -DEFUN (annotate_source, (sf, max_width, annote, arg), - Source_File * sf AND int max_width - AND void (*annote) PARAMS ((char *buf, int w, int l, void *arg)) - AND void *arg) +annotate_source (Source_File *sf, unsigned int max_width, + void (*annote) (char *, unsigned int, int, void *), + void *arg) { - static bool first_file = TRUE; + static bfd_boolean first_file = TRUE; int i, line_num, nread; - bool new_line; + bfd_boolean new_line; char buf[8192]; char fname[PATH_MAX]; char *annotation, *name_only; @@ -106,7 +105,7 @@ DEFUN (annotate_source, (sf, max_width, annote, arg), /* Open input file. If open fails, walk along search-list until open succeeds or reaching end of list. */ strcpy (fname, sf->name); - + if (IS_ABSOLUTE_PATH (sf->name)) sle = 0; /* Don't use search list for absolute paths. */ @@ -115,7 +114,7 @@ DEFUN (annotate_source, (sf, max_width, annote, arg), { DBG (SRCDEBUG, printf ("[annotate_source]: looking for %s, trying %s\n", sf->name, fname)); - + ifp = fopen (fname, FOPEN_RB); if (ifp) break; @@ -139,7 +138,7 @@ DEFUN (annotate_source, (sf, max_width, annote, arg), sle = src_search_list.head; } } - + if (sle) { strcpy (fname, sle->path); @@ -149,7 +148,7 @@ DEFUN (annotate_source, (sf, max_width, annote, arg), strcat (fname, "."); #endif strcat (fname, "/"); - + if (name_only) strcat (fname, name_only); else @@ -170,7 +169,7 @@ DEFUN (annotate_source, (sf, max_width, annote, arg), } ofp = stdout; - + if (create_annotation_files) { /* Try to create annotated source file. */ @@ -213,7 +212,7 @@ DEFUN (annotate_source, (sf, max_width, annote, arg), } #endif ofp = fopen (fname, "w"); - + if (!ofp) { perror (fname); @@ -238,10 +237,10 @@ DEFUN (annotate_source, (sf, max_width, annote, arg), fprintf (ofp, _("*** File %s:\n"), sf->name); } - annotation = xmalloc (max_width + 1); + annotation = (char *) xmalloc (max_width + 1); line_num = 1; new_line = TRUE; - + while ((nread = fread (buf, 1, sizeof (buf), ifp)) > 0) { for (i = 0; i < nread; ++i) @@ -251,14 +250,14 @@ DEFUN (annotate_source, (sf, max_width, annote, arg), (*annote) (annotation, max_width, line_num, arg); fputs (annotation, ofp); ++line_num; - new_line = FALSE; } - + new_line = (buf[i] == '\n'); fputc (buf[i], ofp); } } - + free (annotation); + fclose (ifp); return ofp; }