X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gprof%2Fsym_ids.c;h=d41a716b78e5c6c4657cf60ef276f4652c77c2b1;hb=afb175693a07fa4adcc0656b1598dd51d48123b2;hp=f98ccbfe55ce3e99e700cc5394bf37bf0bece6de;hpb=0eee5820aa0f68b2283b40f5a3fb09aefcfb1575;p=deliverable%2Fbinutils-gdb.git diff --git a/gprof/sym_ids.c b/gprof/sym_ids.c index f98ccbfe55..d41a716b78 100644 --- a/gprof/sym_ids.c +++ b/gprof/sym_ids.c @@ -1,6 +1,6 @@ /* sym_ids.c - Copyright 2000, 2001 Free Software Foundation, Inc. + Copyright 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc. This file is part of GNU Binutils. @@ -16,21 +16,24 @@ 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 - #include "libiberty.h" +#include "safe-ctype.h" +#include "gprof.h" +#include "search_list.h" +#include "source.h" +#include "symtab.h" #include "cg_arcs.h" #include "sym_ids.h" -struct sym_id +static struct sym_id { struct sym_id *next; char *spec; /* Parsing modifies this. */ Table_Id which_table; - bool has_right; + bfd_boolean has_right; struct match { @@ -43,10 +46,20 @@ struct sym_id } *id_list; +static void parse_spec + (char *, Sym *); +static void parse_id + (struct sym_id *); +static bfd_boolean match + (Sym *, Sym *); +static void extend_match + (struct match *, Sym *, Sym_Table *, bfd_boolean); + + Sym_Table syms[NUM_TABLES]; #ifdef DEBUG -const char *table_name[] = +static const char *table_name[] = { "INCL_GRAPH", "EXCL_GRAPH", "INCL_ARCS", "EXCL_ARCS", @@ -71,8 +84,7 @@ static Source_File non_existent_file = void -DEFUN (sym_id_add, (spec, which_table), - const char *spec AND Table_Id which_table) +sym_id_add (const char *spec, Table_Id which_table) { struct sym_id *id; int len = strlen (spec); @@ -100,7 +112,7 @@ DEFUN (sym_id_add, (spec, which_table), FILENAME not containing a dot can be specified by FILENAME. */ static void -DEFUN (parse_spec, (spec, sym), char *spec AND Sym * sym) +parse_spec (char *spec, Sym *sym) { char *colon; @@ -123,7 +135,7 @@ DEFUN (parse_spec, (spec, sym), char *spec AND Sym * sym) if (strlen (spec)) { - if (isdigit ((unsigned char) spec[0])) + if (ISDIGIT (spec[0])) sym->line_num = atoi (spec); else sym->name = spec; @@ -139,7 +151,7 @@ DEFUN (parse_spec, (spec, sym), char *spec AND Sym * sym) if (!sym->file) sym->file = &non_existent_file; } - else if (isdigit ((unsigned char) *spec)) + else if (ISDIGIT (*spec)) { sym->line_num = atoi (spec); } @@ -155,7 +167,7 @@ DEFUN (parse_spec, (spec, sym), char *spec AND Sym * sym) by parse_spec(). */ static void -DEFUN (parse_id, (id), struct sym_id *id) +parse_id (struct sym_id *id) { char *slash; @@ -203,8 +215,8 @@ DEFUN (parse_id, (id), struct sym_id *id) /* Return TRUE iff PATTERN matches SYM. */ -static bool -DEFUN (match, (pattern, sym), Sym * pattern AND Sym * sym) +static bfd_boolean +match (Sym *pattern, Sym *sym) { return (pattern->file ? pattern->file == sym->file : TRUE) && (pattern->line_num ? pattern->line_num == sym->line_num : TRUE) @@ -216,8 +228,7 @@ DEFUN (match, (pattern, sym), Sym * pattern AND Sym * sym) static void -DEFUN (extend_match, (m, sym, tab, second_pass), - struct match *m AND Sym * sym AND Sym_Table * tab AND bool second_pass) +extend_match (struct match *m, Sym *sym, Sym_Table *tab, bfd_boolean second_pass) { if (m->prev_match != sym - 1) { @@ -252,7 +263,7 @@ DEFUN (extend_match, (m, sym, tab, second_pass), requests---you get what you ask for! */ void -DEFUN_VOID (sym_id_parse) +sym_id_parse () { Sym *sym, *left, *right; struct sym_id *id; @@ -350,13 +361,12 @@ DEFUN_VOID (sym_id_parse) time requesting -k a/b. Fortunately, those symbol tables don't get very big (the user has to type them!), so a linear search is probably tolerable. */ -bool -DEFUN (sym_id_arc_is_present, (symtab, from, to), - Sym_Table * symtab AND Sym * from AND Sym * to) +bfd_boolean +sym_id_arc_is_present (Sym_Table *sym_tab, Sym *from, Sym *to) { Sym *sym; - for (sym = symtab->base; sym < symtab->limit; ++sym) + for (sym = sym_tab->base; sym < sym_tab->limit; ++sym) { if (from->addr >= sym->addr && from->addr <= sym->end_addr && arc_lookup (sym, to))