clean up mechanics of mosberger-tang's changes
authorKen Raeburn <raeburn@cygnus>
Tue, 7 Feb 1995 20:06:28 +0000 (20:06 +0000)
committerKen Raeburn <raeburn@cygnus>
Tue, 7 Feb 1995 20:06:28 +0000 (20:06 +0000)
bfd/ChangeLog
bfd/ecoff.c

index 3782a01a8125d48adf10c369863137c518b40871..f410e9898e3a72dde4756b3695f62e2bac609af7 100644 (file)
@@ -1,3 +1,10 @@
+Tue Feb  7 14:43:33 1995  Ken Raeburn  (raeburn@kr-pc.cygnus.com)
+
+       * ecoff.c: Reformatted some comments and brace constructs in
+       recent changes to GNU style.
+       (cmp_fdrtab_entry, mk_fdrtab, lookup): Use old-style function
+       definitions.
+
 Tue Feb  7 14:21:28 1995  Ian Lance Taylor  <ian@cygnus.com>
 
        * ecoffswap.h (ecoff_swap_pdr_in): Zero out intern before setting
index 4d80edc5d9b97794805fcaffb3e4f73ad05f0aab..f5461aee0d42cd93900b7efaca3d5c3ef402e1c7 100644 (file)
@@ -2004,7 +2004,8 @@ _bfd_ecoff_canonicalize_reloc (abfd, section, relptr, symbols)
 \f
 
 static int
-cmp_fdrtab_entry (const void *leftp, const void *rightp)
+cmp_fdrtab_entry (leftp, rightp)
+     const void *leftp, *rightp;
 {
   const struct ecoff_fdrtab_entry *lp = leftp;
   const struct ecoff_fdrtab_entry *rp = rightp;
@@ -2016,15 +2017,14 @@ cmp_fdrtab_entry (const void *leftp, const void *rightp)
   return 0;
 }
 
-/*
- * Each file descriptor (FDR) has a memory address, to simplify
- * looking up an FDR by address, we build a table covering all FDRs
- * that have a least one procedure descriptor in them.  The final
- * table will be sorted by address so we can look it up via binary
- * search.
- */
+/* Each file descriptor (FDR) has a memory address, to simplify
+   looking up an FDR by address, we build a table covering all FDRs
+   that have a least one procedure descriptor in them.  The final
+   table will be sorted by address so we can look it up via binary
+   search.  */
 static boolean
-mk_fdrtab (bfd *abfd)
+mk_fdrtab (abfd)
+     bfd *abfd;
 {
   struct ecoff_debug_info * const debug_info = &ecoff_data (abfd)->debug_info;
   const struct ecoff_debug_swap * const debug_swap
@@ -2069,11 +2069,9 @@ mk_fdrtab (bfd *abfd)
       if (fdr_ptr->cpd == 0)
        continue;
 
-      /*
-       * Check whether this file has stabs debugging information.  In
-       * a file with stabs debugging information, the second local
-       * symbol is named @stabs.
-       */
+      /* Check whether this file has stabs debugging information.  In
+        a file with stabs debugging information, the second local
+        symbol is named @stabs.  */
       stabs = false;
       if (fdr_ptr->csym >= 2)
        {
@@ -2099,40 +2097,34 @@ mk_fdrtab (bfd *abfd)
          pdr_ptr = ((char *) debug_info->external_pdr
                     + fdr_ptr->ipdFirst * external_pdr_size);
          (*debug_swap->swap_pdr_in) (abfd, (PTR) pdr_ptr, &pdr);
-         /*
-          * The address of the first PDR is the offset of that
-          * procedure relative to the beginning of file FDR.
-          */
+         /* The address of the first PDR is the offset of that
+            procedure relative to the beginning of file FDR.  */
          tab->base_addr = fdr_ptr->adr - pdr.adr;
        }
       else
        {
-         /*
-          * XXX I don't know about stabs, so this is a guess
-          * (davidm@cs.arizona.edu):
-          */
+         /* XXX I don't know about stabs, so this is a guess
+            (davidm@cs.arizona.edu): */
          tab->base_addr = fdr_ptr->adr;
        }
       tab->fdr = fdr_ptr;
       ++tab;
     }
-  /*
-   * Finally, the table is sorted in increasing memory-address order.
-   * The table is mostly sorted already, but there are cases (e.g.,
-   * static functions in include files), where this does not hold
-   * Use "odump -PFv" to verify...
-   */
+  /* Finally, the table is sorted in increasing memory-address order.
+     The table is mostly sorted already, but there are cases (e.g.,
+     static functions in include files), where this does not hold.
+     Use "odump -PFv" to verify...  */
   qsort((char*) ecoff_data (abfd)->fdrtab, len,
        sizeof(struct ecoff_fdrtab_entry), cmp_fdrtab_entry);
 
   return true;
 }
 
-/*
- * Return index of first FDR that covers to OFFSET.
- */
+/* Return index of first FDR that covers to OFFSET.  */
 static long
-lookup (bfd *abfd, bfd_vma offset)
+lookup (abfd, offset)
+     bfd *abfd;
+     bfd_vma offset;
 {
   long low, high, len;
   long mid = -1;
@@ -2193,21 +2185,16 @@ _bfd_ecoff_find_nearest_line (abfd, section, ignore_symbols, offset,
   int i;
 
   offset += section->vma;
-  /*
-   * If we're not in the .text section, we don't have any line
-   * numbers.
-   */
+  /* If we're not in the .text section, we don't have any line
+     numbers.  */
   if (strcmp (section->name, _TEXT) != 0
       || offset < ecoff_data (abfd)->text_start
       || offset >= ecoff_data (abfd)->text_end)
     return false;
-  /*
-   * Build FDR table (sorted by object file's base-address) if
-   * we don't have it already:
-   */
-  if (!ecoff_data (abfd)->fdrtab && !mk_fdrtab (abfd)) {
-      return false;
-  }
+  /* Build FDR table (sorted by object file's base-address) if we
+     don't have it already.  */
+  if (!ecoff_data (abfd)->fdrtab && !mk_fdrtab (abfd))
+    return false;
   tab = ecoff_data (abfd)->fdrtab;
 
   i = lookup(abfd, offset);    /* find first FDR for address OFFSET */
@@ -2215,11 +2202,9 @@ _bfd_ecoff_find_nearest_line (abfd, section, ignore_symbols, offset,
     return false;              /* no FDR, no fun... */
   fdr_ptr = tab[i].fdr;
 
-  /*
-   * Check whether this file has stabs debugging information.  In a
-   * file with stabs debugging information, the second local symbol is
-   * named @stabs.
-   */
+  /* Check whether this file has stabs debugging information.  In a
+     file with stabs debugging information, the second local symbol is
+     named @stabs.  */
   stabs = false;
   if (fdr_ptr->csym >= 2)
     {
@@ -2245,114 +2230,111 @@ _bfd_ecoff_find_nearest_line (abfd, section, ignore_symbols, offset,
       unsigned char *line_ptr;
       unsigned char *line_end;
       int lineno;
-      /*
-       * This file uses ECOFF debugging information.  Each FDR has a
-       * list of procedure descriptors (PDR).  The address in the FDR
-       * is the absolute address of the first procedure.  The address
-       * in the first PDR gives the offset of that procedure relative
-       * to the object file's base-address.  The addresses in
-       * subsequent PDRs specify each procedure's address relative to
-       * the object file's base-address.  To make things more juicy,
-       * whenever the PROF bit in the PDR is set, the real entry point
-       * of the procedure may be 16 bytes below what would normally be
-       * the procedure's entry point.  Instead, DEC came up with a
-       * wicked scheme to create profiled libraries "on the fly":
-       * instead of shipping a regular and a profiled version of each
-       * library, they insert 16 bytes of unused space in front of
-       * each procedure and set the "prof" bit in the PDR to indicate
-       * that there is a gap there (this is done automagically by "as"
-       * when option "-pg" is specified).  Thus, normally, you link
-       * against such a library and, except for lots of 16 byte gaps
-       * between functions, things will behave as usual.  However,
-       * when invoking "ld" with option "-pg", it will fill those gaps
-       * with code that calls mcount().  It then moves the function's
-       * entry point down by 16 bytes, and out pops a binary that has
-       * all functions profiled.
-       *
-       * NOTE: Neither FDRs nor PDRs are strictly sorted in memory order.
-       *       For example, when including header-files that define
-       *       functions, the FDRs follow behind the including file,
-       *       even though their code may have been generated at a lower
-       *       address.  File coff-alpha.c from libbfd illustrates this
-       *       (use "odump -PFv" to look at a file's FDR/PDR).  Similarly,
-       *       PDRs are sometimes out of order as well.  An example of this
-       *       is OSF/1 v3.0 libc's malloc.c.  I'm not sure why this happens,
-       *       but it could be due to optimizations that reorder a function's
-       *       position within an object-file.
-       *
-       * Strategy:
-       * 
-       * On the first call to this function, we build a table of FDRs
-       * that is sorted by the base-address of the object-file the FDR
-       * is referring to.  Notice that each object-file may contain
-       * code from multiple source files (e.g., due to code defined in
-       * include files).  Thus, for any given base-address, there may
-       * be multiple FDRs (but this case is, fortunately, uncommon).
-       * lookup(addr) guarantees to return the first FDR that applies
-       * to address ADDR.  Thus, after invoking lookup(), we have a
-       * list of FDRs that may contain the PDR for ADDR.  Next, we walk
-       * through the PDRs of these FDRs and locate the one that is
-       * closest to ADDR (i.e., for which the difference between ADDR
-       * and the PDR's entry point is positive and minimal).  Once,
-       * the right FDR and PDR are located, we simply walk through the
-       * line-number table to lookup the line-number that best matches
-       * ADDR.  Obviously, things could be sped up by keeping a sorted
-       * list of PDRs instead of a sorted list of FDRs.  However, this
-       * would increase space requirements considerably, which is
-       * undesirable.
-       */
+      /* This file uses ECOFF debugging information.  Each FDR has a
+         list of procedure descriptors (PDR).  The address in the FDR
+         is the absolute address of the first procedure.  The address
+         in the first PDR gives the offset of that procedure relative
+         to the object file's base-address.  The addresses in
+         subsequent PDRs specify each procedure's address relative to
+         the object file's base-address.  To make things more juicy,
+         whenever the PROF bit in the PDR is set, the real entry point
+         of the procedure may be 16 bytes below what would normally be
+         the procedure's entry point.  Instead, DEC came up with a
+         wicked scheme to create profiled libraries "on the fly":
+         instead of shipping a regular and a profiled version of each
+         library, they insert 16 bytes of unused space in front of
+         each procedure and set the "prof" bit in the PDR to indicate
+         that there is a gap there (this is done automagically by "as"
+         when option "-pg" is specified).  Thus, normally, you link
+         against such a library and, except for lots of 16 byte gaps
+         between functions, things will behave as usual.  However,
+         when invoking "ld" with option "-pg", it will fill those gaps
+         with code that calls mcount().  It then moves the function's
+         entry point down by 16 bytes, and out pops a binary that has
+         all functions profiled.
+
+         NOTE: Neither FDRs nor PDRs are strictly sorted in memory
+               order.  For example, when including header-files that
+               define functions, the FDRs follow behind the including
+               file, even though their code may have been generated at
+               a lower address.  File coff-alpha.c from libbfd
+               illustrates this (use "odump -PFv" to look at a file's
+               FDR/PDR).  Similarly, PDRs are sometimes out of order
+               as well.  An example of this is OSF/1 v3.0 libc's
+               malloc.c.  I'm not sure why this happens, but it could
+               be due to optimizations that reorder a function's
+               position within an object-file.
+        
+         Strategy:
+         
+         On the first call to this function, we build a table of FDRs
+         that is sorted by the base-address of the object-file the FDR
+         is referring to.  Notice that each object-file may contain
+         code from multiple source files (e.g., due to code defined in
+         include files).  Thus, for any given base-address, there may
+         be multiple FDRs (but this case is, fortunately, uncommon).
+         lookup(addr) guarantees to return the first FDR that applies
+         to address ADDR.  Thus, after invoking lookup(), we have a
+         list of FDRs that may contain the PDR for ADDR.  Next, we
+         walk through the PDRs of these FDRs and locate the one that
+         is closest to ADDR (i.e., for which the difference between
+         ADDR and the PDR's entry point is positive and minimal).
+         Once, the right FDR and PDR are located, we simply walk
+         through the line-number table to lookup the line-number that
+         best matches ADDR.  Obviously, things could be sped up by
+         keeping a sorted list of PDRs instead of a sorted list of
+         FDRs.  However, this would increase space requirements
+         considerably, which is undesirable.  */
       external_pdr_size = debug_swap->external_pdr_size;
 
       /* Make offset relative to object file's start-address: */
       offset -= tab[i].base_addr;
-      /*
-       * Search FDR list starting at tab[i] for the PDR that best matches
-       * OFFSET.  Normally, the FDR list is only one entry long.
-       */
+      /* Search FDR list starting at tab[i] for the PDR that best matches
+         OFFSET.  Normally, the FDR list is only one entry long.  */
       best_fdr = NULL;
-      do {
-       bfd_vma dist, min_dist = 0;
-       char *pdr_hold;
-       char *pdr_end;
-
-       fdr_ptr = tab[i].fdr;
-
-       pdr_ptr = ((char *) debug_info->external_pdr
-                  + fdr_ptr->ipdFirst * external_pdr_size);
-       pdr_end = pdr_ptr + fdr_ptr->cpd * external_pdr_size;
-       (*debug_swap->swap_pdr_in) (abfd, (PTR) pdr_ptr, &pdr);
-       /*
-        * Find PDR that is closest to OFFSET.  If pdr.prof is set,
-        * the procedure entry-point *may* be 0x10 below pdr.adr.  
-        * We simply pretend that pdr.prof *implies* a lower entry-point.
-        * This is safe because it just means that may identify
-        * 4 NOPs in front of the function as belonging to the function.
-        */
-       for (pdr_hold = NULL;
-            pdr_ptr < pdr_end;
-            (pdr_ptr += external_pdr_size,
-             (*debug_swap->swap_pdr_in) (abfd, (PTR) pdr_ptr, &pdr)))
-         {
-           if (offset >= (pdr.adr - 0x10 * pdr.prof))
-             {
-               dist = offset - (pdr.adr - 0x10 * pdr.prof);
-               if (!pdr_hold || dist < min_dist)
-                 {
-                   min_dist = dist;
-                   pdr_hold = pdr_ptr;
-                 }
-             }
-         }
-
-       if (!best_pdr || min_dist < best_dist)
-         {
-           best_dist = min_dist;
-           best_fdr = fdr_ptr;
-           best_pdr = pdr_hold;
-         }
-       /* continue looping until base_addr of next entry is different: */
-      while (++i < ecoff_data (abfd)->fdrtab_len
-              && tab[i].base_addr == tab[i - 1].base_addr);
+      do
+       {
+         bfd_vma dist, min_dist = 0;
+         char *pdr_hold;
+         char *pdr_end;
+         
+         fdr_ptr = tab[i].fdr;
+         
+         pdr_ptr = ((char *) debug_info->external_pdr
+                    + fdr_ptr->ipdFirst * external_pdr_size);
+         pdr_end = pdr_ptr + fdr_ptr->cpd * external_pdr_size;
+         (*debug_swap->swap_pdr_in) (abfd, (PTR) pdr_ptr, &pdr);
+         /* Find PDR that is closest to OFFSET.  If pdr.prof is set,
+            the procedure entry-point *may* be 0x10 below pdr.adr.  We
+            simply pretend that pdr.prof *implies* a lower entry-point.
+            This is safe because it just means that may identify 4 NOPs
+            in front of the function as belonging to the function.  */
+         for (pdr_hold = NULL;
+              pdr_ptr < pdr_end;
+              (pdr_ptr += external_pdr_size,
+               (*debug_swap->swap_pdr_in) (abfd, (PTR) pdr_ptr, &pdr)))
+           {
+             if (offset >= (pdr.adr - 0x10 * pdr.prof))
+               {
+                 dist = offset - (pdr.adr - 0x10 * pdr.prof);
+                 if (!pdr_hold || dist < min_dist)
+                   {
+                     min_dist = dist;
+                     pdr_hold = pdr_ptr;
+                   }
+               }
+           }
+         
+         if (!best_pdr || min_dist < best_dist)
+           {
+             best_dist = min_dist;
+             best_fdr = fdr_ptr;
+             best_pdr = pdr_hold;
+           }
+         /* continue looping until base_addr of next entry is different: */
+       }
+      while (++i < ecoff_data (abfd)->fdrtab_len
+            && tab[i].base_addr == tab[i - 1].base_addr);
 
       if (!best_fdr || !best_pdr)
        return false;                   /* shouldn't happen... */
@@ -2361,12 +2343,10 @@ _bfd_ecoff_find_nearest_line (abfd, section, ignore_symbols, offset,
       fdr_ptr = best_fdr;
       pdr_ptr = best_pdr;
       (*debug_swap->swap_pdr_in) (abfd, (PTR) pdr_ptr, &pdr);
-      /*
-       * Now we can look for the actual line number.  The line numbers
-       * are stored in a very funky format, which I won't try to
-       * describe.  The search is bounded by the end of the FDRs line
-       * number entries.
-       */
+      /* Now we can look for the actual line number.  The line numbers
+         are stored in a very funky format, which I won't try to
+         describe.  The search is bounded by the end of the FDRs line
+         number entries.  */
       line_end = debug_info->line + fdr_ptr->cbLineOffset + fdr_ptr->cbLine;
 
       /* Make offset relative to procedure entry: */
@@ -2396,10 +2376,8 @@ _bfd_ecoff_find_nearest_line (abfd, section, ignore_symbols, offset,
          offset -= count * 4;
        }
 
-      /*
-       * If fdr_ptr->rss is -1, then this file does not have full
-       * symbols, at least according to gdb/mipsread.c.
-       */
+      /* If fdr_ptr->rss is -1, then this file does not have full
+         symbols, at least according to gdb/mipsread.c.  */
       if (fdr_ptr->rss == -1)
        {
          *filename_ptr = NULL;
@@ -2521,7 +2499,7 @@ _bfd_ecoff_find_nearest_line (abfd, section, ignore_symbols, offset,
              if (sym.value > offset + section->vma)
                {
                  /* We have passed the location in the file we are
-                     looking for, so we can get out of the loop.  */
+                    looking for, so we can get out of the loop.  */
                  break;
                }