gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / gprof / symtab.c
index c4ce7ed21598a801a1506fddec224f9ac060cbae..df3dbdc1aecbb3cb6b2a5b45f22731c2498f0371 100644 (file)
@@ -1,12 +1,12 @@
 /* symtab.c
 
-   Copyright 2000, 2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1999-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.  */
 \f
 #include "gprof.h"
 #include "search_list.h"
@@ -26,7 +26,7 @@
 #include "cg_arcs.h"
 #include "corefile.h"
 
-static int cmp_addr PARAMS ((const PTR, const PTR));
+static int cmp_addr (const PTR, const PTR);
 
 Sym_Table symtab;
 
@@ -34,8 +34,7 @@ Sym_Table symtab;
 /* Initialize a symbol (so it's empty).  */
 
 void
-sym_init (sym)
-     Sym *sym;
+sym_init (Sym *sym)
 {
   memset (sym, 0, sizeof (*sym));
 
@@ -59,9 +58,7 @@ sym_init (sym)
    the global symbol survives.  */
 
 static int
-cmp_addr (lp, rp)
-     const PTR lp;
-     const PTR rp;
+cmp_addr (const PTR lp, const PTR rp)
 {
   const Sym *left = (const Sym *) lp;
   const Sym *right = (const Sym *) rp;
@@ -79,8 +76,7 @@ cmp_addr (lp, rp)
 
 
 void
-symtab_finalize (tab)
-     Sym_Table *tab;
+symtab_finalize (Sym_Table *tab)
 {
   Sym *src, *dst;
   bfd_vma prev_addr;
@@ -93,7 +89,7 @@ symtab_finalize (tab)
 
   /* Remove duplicate entries to speed-up later processing and
      set end_addr if its not set yet.  */
-  prev_addr = tab->base[0].addr + 1;
+  prev_addr = tab->base[0].addr - 1;
 
   for (src = dst = tab->base; src < tab->limit; ++src)
     {
@@ -111,7 +107,7 @@ symtab_finalize (tab)
                  && ((src->is_func && !dst[-1].is_func)
                      || ((src->is_func == dst[-1].is_func)
                          && ((src->name[0] != '_' && dst[-1].name[0] == '_')
-                             || (src->name[0]
+                             || (src->name[0] == '_' && dst[-1].name[0] == '_'
                                  && src->name[1] != '_'
                                  && dst[-1].name[1] == '_'))))))
            {
@@ -152,7 +148,8 @@ symtab_finalize (tab)
     }
 
   if (tab->len > 0 && dst[-1].end_addr == 0)
-    dst[-1].end_addr = core_text_sect->vma + core_text_sect->_raw_size - 1;
+    dst[-1].end_addr
+      = core_text_sect->vma + bfd_section_size (core_text_sect) - 1;
 
   DBG (AOUTDEBUG | IDDEBUG,
        printf ("[symtab_finalize]: removed %d duplicate entries\n",
@@ -167,8 +164,9 @@ symtab_finalize (tab)
        for (j = 0; j < tab->len; ++j)
         {
           printf ("[symtab_finalize] 0x%lx-0x%lx\t%s\n",
-                (long) tab->base[j].addr, (long) tab->base[j].end_addr,
-                tab->base[j].name);
+                  (unsigned long) tab->base[j].addr,
+                  (unsigned long) tab->base[j].end_addr,
+                  tab->base[j].name);
         }
   );
 }
@@ -177,11 +175,9 @@ symtab_finalize (tab)
 #ifdef DEBUG
 
 Sym *
-dbg_sym_lookup (sym_tab, address)
-     Sym_Table *sym_tab;
-     bfd_vma address;
+dbg_sym_lookup (Sym_Table *sym_tab, bfd_vma address)
 {
-  long low, mid, high;
+  unsigned long low, mid, high;
   Sym *sym;
 
   fprintf (stderr, "[dbg_sym_lookup] address 0x%lx\n",
@@ -218,9 +214,7 @@ dbg_sym_lookup (sym_tab, address)
 /* Look up an address in the symbol-table that is sorted by address.
    If address does not hit any symbol, 0 is returned.  */
 Sym *
-sym_lookup (sym_tab, address)
-     Sym_Table *sym_tab;
-     bfd_vma address;
+sym_lookup (Sym_Table *sym_tab, bfd_vma address)
 {
   long low, high;
   long mid = -1;
This page took 0.025615 seconds and 4 git commands to generate.