* elfread.c (elf_symtab_read): Remove if (1) and reindent.
authorDaniel Jacobowitz <drow@false.org>
Sun, 13 Nov 2005 18:56:34 +0000 (18:56 +0000)
committerDaniel Jacobowitz <drow@false.org>
Sun, 13 Nov 2005 18:56:34 +0000 (18:56 +0000)
gdb/ChangeLog
gdb/elfread.c

index 85e9fb1ac41eed739a610cdc1a79f025ff87ed05..db0f0344ed648f392d76b2b995e4869c76f073de 100644 (file)
@@ -1,3 +1,7 @@
+2005-11-13  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * elfread.c (elf_symtab_read): Remove if (1) and reindent.
+
 2005-11-13  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * arm-linux-tdep.c (eabi_linux_arm_le_breakpoint)
index 057af425e916834271cc8e996a8031ec34c69d4c..f8e08ea19fcfe946f772187308ea30f1f26fbbee 100644 (file)
@@ -164,264 +164,261 @@ elf_symtab_read (struct objfile *objfile, int dynamic,
   struct dbx_symfile_info *dbx = objfile->deprecated_sym_stab_info;
   int stripped = (bfd_get_symcount (objfile->obfd) == 0);
 
-  if (1)
+  for (i = 0; i < number_of_symbols; i++)
     {
-      for (i = 0; i < number_of_symbols; i++)
+      sym = symbol_table[i];
+      if (sym->name == NULL || *sym->name == '\0')
        {
-         sym = symbol_table[i];
-         if (sym->name == NULL || *sym->name == '\0')
-           {
-             /* Skip names that don't exist (shouldn't happen), or names
-                that are null strings (may happen). */
-             continue;
-           }
+         /* Skip names that don't exist (shouldn't happen), or names
+            that are null strings (may happen). */
+         continue;
+       }
 
-          offset = ANOFFSET (objfile->section_offsets, sym->section->index);
-         if (dynamic
-             && sym->section == &bfd_und_section
-             && (sym->flags & BSF_FUNCTION))
-           {
-             struct minimal_symbol *msym;
-
-             /* Symbol is a reference to a function defined in
-                a shared library.
-                If its value is non zero then it is usually the address
-                of the corresponding entry in the procedure linkage table,
-                plus the desired section offset.
-                If its value is zero then the dynamic linker has to resolve
-                the symbol. We are unable to find any meaningful address
-                for this symbol in the executable file, so we skip it.  */
-             symaddr = sym->value;
-             if (symaddr == 0)
-               continue;
-             symaddr += offset;
-             msym = record_minimal_symbol
-               ((char *) sym->name, symaddr,
-                mst_solib_trampoline, sym->section, objfile);
+      offset = ANOFFSET (objfile->section_offsets, sym->section->index);
+      if (dynamic
+         && sym->section == &bfd_und_section
+         && (sym->flags & BSF_FUNCTION))
+       {
+         struct minimal_symbol *msym;
+
+         /* Symbol is a reference to a function defined in
+            a shared library.
+            If its value is non zero then it is usually the address
+            of the corresponding entry in the procedure linkage table,
+            plus the desired section offset.
+            If its value is zero then the dynamic linker has to resolve
+            the symbol. We are unable to find any meaningful address
+            for this symbol in the executable file, so we skip it.  */
+         symaddr = sym->value;
+         if (symaddr == 0)
+           continue;
+         symaddr += offset;
+         msym = record_minimal_symbol
+           ((char *) sym->name, symaddr,
+            mst_solib_trampoline, sym->section, objfile);
 #ifdef SOFUN_ADDRESS_MAYBE_MISSING
-             if (msym != NULL)
-               msym->filename = filesymname;
+         if (msym != NULL)
+           msym->filename = filesymname;
 #endif
-             continue;
-           }
+         continue;
+       }
 
-         /* If it is a nonstripped executable, do not enter dynamic
-            symbols, as the dynamic symbol table is usually a subset
-            of the main symbol table.  */
-         if (dynamic && !stripped)
-           continue;
-         if (sym->flags & BSF_FILE)
+      /* If it is a nonstripped executable, do not enter dynamic
+        symbols, as the dynamic symbol table is usually a subset
+        of the main symbol table.  */
+      if (dynamic && !stripped)
+       continue;
+      if (sym->flags & BSF_FILE)
+       {
+         /* STT_FILE debugging symbol that helps stabs-in-elf debugging.
+            Chain any old one onto the objfile; remember new sym.  */
+         if (sectinfo != NULL)
            {
-             /* STT_FILE debugging symbol that helps stabs-in-elf debugging.
-                Chain any old one onto the objfile; remember new sym.  */
-             if (sectinfo != NULL)
-               {
-                 sectinfo->next = dbx->stab_section_info;
-                 dbx->stab_section_info = sectinfo;
-                 sectinfo = NULL;
-               }
-             filesym = sym;
+             sectinfo->next = dbx->stab_section_info;
+             dbx->stab_section_info = sectinfo;
+             sectinfo = NULL;
+           }
+         filesym = sym;
 #ifdef SOFUN_ADDRESS_MAYBE_MISSING
-             filesymname =
-               obsavestring ((char *) filesym->name, strlen (filesym->name),
-                             &objfile->objfile_obstack);
+         filesymname =
+           obsavestring ((char *) filesym->name, strlen (filesym->name),
+                         &objfile->objfile_obstack);
 #endif
+       }
+      else if (sym->flags & BSF_SECTION_SYM)
+       continue;
+      else if (sym->flags & (BSF_GLOBAL | BSF_LOCAL | BSF_WEAK))
+       {
+         struct minimal_symbol *msym;
+
+         /* Select global/local/weak symbols.  Note that bfd puts abs
+            symbols in their own section, so all symbols we are
+            interested in will have a section. */
+         /* Bfd symbols are section relative. */
+         symaddr = sym->value + sym->section->vma;
+         /* Relocate all non-absolute symbols by the section offset.  */
+         if (sym->section != &bfd_abs_section)
+           {
+             symaddr += offset;
            }
-         else if (sym->flags & BSF_SECTION_SYM)
-           continue;
-         else if (sym->flags & (BSF_GLOBAL | BSF_LOCAL | BSF_WEAK))
+         /* For non-absolute symbols, use the type of the section
+            they are relative to, to intuit text/data.  Bfd provides
+            no way of figuring this out for absolute symbols. */
+         if (sym->section == &bfd_abs_section)
            {
-             struct minimal_symbol *msym;
-
-             /* Select global/local/weak symbols.  Note that bfd puts abs
-                symbols in their own section, so all symbols we are
-                interested in will have a section. */
-             /* Bfd symbols are section relative. */
-             symaddr = sym->value + sym->section->vma;
-             /* Relocate all non-absolute symbols by the section offset.  */
-             if (sym->section != &bfd_abs_section)
+             /* This is a hack to get the minimal symbol type
+                right for Irix 5, which has absolute addresses
+                with special section indices for dynamic symbols. */
+             unsigned short shndx =
+               ((elf_symbol_type *) sym)->internal_elf_sym.st_shndx;
+
+             switch (shndx)
                {
+               case SHN_MIPS_TEXT:
+                 ms_type = mst_text;
+                 break;
+               case SHN_MIPS_DATA:
+                 ms_type = mst_data;
+                 break;
+               case SHN_MIPS_ACOMMON:
+                 ms_type = mst_bss;
+                 break;
+               default:
+                 ms_type = mst_abs;
+               }
+
+             /* If it is an Irix dynamic symbol, skip section name
+                symbols, relocate all others by section offset. */
+             if (ms_type != mst_abs)
+               {
+                 if (sym->name[0] == '.')
+                   continue;
                  symaddr += offset;
                }
-             /* For non-absolute symbols, use the type of the section
-                they are relative to, to intuit text/data.  Bfd provides
-                no way of figuring this out for absolute symbols. */
-             if (sym->section == &bfd_abs_section)
+           }
+         else if (sym->section->flags & SEC_CODE)
+           {
+             if (sym->flags & BSF_GLOBAL)
                {
-                 /* This is a hack to get the minimal symbol type
-                    right for Irix 5, which has absolute addresses
-                    with special section indices for dynamic symbols. */
-                 unsigned short shndx =
-                 ((elf_symbol_type *) sym)->internal_elf_sym.st_shndx;
-
-                 switch (shndx)
-                   {
-                   case SHN_MIPS_TEXT:
-                     ms_type = mst_text;
-                     break;
-                   case SHN_MIPS_DATA:
-                     ms_type = mst_data;
-                     break;
-                   case SHN_MIPS_ACOMMON:
-                     ms_type = mst_bss;
-                     break;
-                   default:
-                     ms_type = mst_abs;
-                   }
-
-                 /* If it is an Irix dynamic symbol, skip section name
-                    symbols, relocate all others by section offset. */
-                 if (ms_type != mst_abs)
-                   {
-                     if (sym->name[0] == '.')
-                       continue;
-                     symaddr += offset;
-                   }
+                 ms_type = mst_text;
+               }
+             else if ((sym->name[0] == '.' && sym->name[1] == 'L')
+                      || ((sym->flags & BSF_LOCAL)
+                          && sym->name[0] == '$'
+                          && sym->name[1] == 'L'))
+               /* Looks like a compiler-generated label.  Skip
+                  it.  The assembler should be skipping these (to
+                  keep executables small), but apparently with
+                  gcc on the (deleted) delta m88k SVR4, it loses.
+                  So to have us check too should be harmless (but
+                  I encourage people to fix this in the assembler
+                  instead of adding checks here).  */
+               continue;
+             else
+               {
+                 ms_type = mst_file_text;
                }
-             else if (sym->section->flags & SEC_CODE)
+           }
+         else if (sym->section->flags & SEC_ALLOC)
+           {
+             if (sym->flags & (BSF_GLOBAL | BSF_WEAK))
                {
-                 if (sym->flags & BSF_GLOBAL)
+                 if (sym->section->flags & SEC_LOAD)
                    {
-                     ms_type = mst_text;
+                     ms_type = mst_data;
                    }
-                 else if ((sym->name[0] == '.' && sym->name[1] == 'L')
-                          || ((sym->flags & BSF_LOCAL)
-                              && sym->name[0] == '$'
-                              && sym->name[1] == 'L'))
-                   /* Looks like a compiler-generated label.  Skip
-                      it.  The assembler should be skipping these (to
-                      keep executables small), but apparently with
-                      gcc on the (deleted) delta m88k SVR4, it loses.
-                      So to have us check too should be harmless (but
-                      I encourage people to fix this in the assembler
-                      instead of adding checks here).  */
-                   continue;
                  else
                    {
-                     ms_type = mst_file_text;
+                     ms_type = mst_bss;
                    }
                }
-             else if (sym->section->flags & SEC_ALLOC)
+             else if (sym->flags & BSF_LOCAL)
                {
-                 if (sym->flags & (BSF_GLOBAL | BSF_WEAK))
-                   {
-                     if (sym->section->flags & SEC_LOAD)
-                       {
-                         ms_type = mst_data;
-                       }
-                     else
-                       {
-                         ms_type = mst_bss;
-                       }
-                   }
-                 else if (sym->flags & BSF_LOCAL)
+                 /* Named Local variable in a Data section.
+                    Check its name for stabs-in-elf.  */
+                 int special_local_sect;
+                 if (strcmp ("Bbss.bss", sym->name) == 0)
+                   special_local_sect = SECT_OFF_BSS (objfile);
+                 else if (strcmp ("Ddata.data", sym->name) == 0)
+                   special_local_sect = SECT_OFF_DATA (objfile);
+                 else if (strcmp ("Drodata.rodata", sym->name) == 0)
+                   special_local_sect = SECT_OFF_RODATA (objfile);
+                 else
+                   special_local_sect = -1;
+                 if (special_local_sect >= 0)
                    {
-                     /* Named Local variable in a Data section.
-                        Check its name for stabs-in-elf.  */
-                     int special_local_sect;
-                     if (strcmp ("Bbss.bss", sym->name) == 0)
-                       special_local_sect = SECT_OFF_BSS (objfile);
-                     else if (strcmp ("Ddata.data", sym->name) == 0)
-                       special_local_sect = SECT_OFF_DATA (objfile);
-                     else if (strcmp ("Drodata.rodata", sym->name) == 0)
-                       special_local_sect = SECT_OFF_RODATA (objfile);
-                     else
-                       special_local_sect = -1;
-                     if (special_local_sect >= 0)
+                     /* Found a special local symbol.  Allocate a
+                        sectinfo, if needed, and fill it in.  */
+                     if (sectinfo == NULL)
                        {
-                         /* Found a special local symbol.  Allocate a
-                            sectinfo, if needed, and fill it in.  */
-                         if (sectinfo == NULL)
+                         int max_index;
+                         size_t size;
+
+                         max_index 
+                           = max (SECT_OFF_BSS (objfile),
+                                  max (SECT_OFF_DATA (objfile),
+                                       SECT_OFF_RODATA (objfile)));
+
+                         /* max_index is the largest index we'll
+                            use into this array, so we must
+                            allocate max_index+1 elements for it.
+                            However, 'struct stab_section_info'
+                            already includes one element, so we
+                            need to allocate max_index aadditional
+                            elements.  */
+                         size = (sizeof (struct stab_section_info) 
+                                 + (sizeof (CORE_ADDR)
+                                    * max_index));
+                         sectinfo = (struct stab_section_info *)
+                           xmalloc (size);
+                         memset (sectinfo, 0, size);
+                         sectinfo->num_sections = max_index;
+                         if (filesym == NULL)
                            {
-                             int max_index;
-                             size_t size;
-
-                             max_index 
-                               = max (SECT_OFF_BSS (objfile),
-                                      max (SECT_OFF_DATA (objfile),
-                                           SECT_OFF_RODATA (objfile)));
-
-                              /* max_index is the largest index we'll
-                                 use into this array, so we must
-                                 allocate max_index+1 elements for it.
-                                 However, 'struct stab_section_info'
-                                 already includes one element, so we
-                                 need to allocate max_index aadditional
-                                 elements.  */
-                             size = (sizeof (struct stab_section_info) 
-                                     + (sizeof (CORE_ADDR)
-                                        * max_index));
-                             sectinfo = (struct stab_section_info *)
-                               xmalloc (size);
-                             memset (sectinfo, 0, size);
-                             sectinfo->num_sections = max_index;
-                             if (filesym == NULL)
-                               {
-                                 complaint (&symfile_complaints,
-                                            _("elf/stab section information %s without a preceding file symbol"),
-                                            sym->name);
-                               }
-                             else
-                               {
-                                 sectinfo->filename =
-                                   (char *) filesym->name;
-                               }
+                             complaint (&symfile_complaints,
+                                        _("elf/stab section information %s without a preceding file symbol"),
+                                        sym->name);
+                           }
+                         else
+                           {
+                             sectinfo->filename =
+                               (char *) filesym->name;
                            }
-                         if (sectinfo->sections[special_local_sect] != 0)
-                           complaint (&symfile_complaints,
-                                      _("duplicated elf/stab section information for %s"),
-                                      sectinfo->filename);
-                         /* BFD symbols are section relative.  */
-                         symaddr = sym->value + sym->section->vma;
-                         /* Relocate non-absolute symbols by the
-                             section offset.  */
-                         if (sym->section != &bfd_abs_section)
-                           symaddr += offset;
-                         sectinfo->sections[special_local_sect] = symaddr;
-                         /* The special local symbols don't go in the
-                            minimal symbol table, so ignore this one.  */
-                         continue;
-                       }
-                     /* Not a special stabs-in-elf symbol, do regular
-                        symbol processing.  */
-                     if (sym->section->flags & SEC_LOAD)
-                       {
-                         ms_type = mst_file_data;
-                       }
-                     else
-                       {
-                         ms_type = mst_file_bss;
                        }
+                     if (sectinfo->sections[special_local_sect] != 0)
+                       complaint (&symfile_complaints,
+                                  _("duplicated elf/stab section information for %s"),
+                                  sectinfo->filename);
+                     /* BFD symbols are section relative.  */
+                     symaddr = sym->value + sym->section->vma;
+                     /* Relocate non-absolute symbols by the
+                        section offset.  */
+                     if (sym->section != &bfd_abs_section)
+                       symaddr += offset;
+                     sectinfo->sections[special_local_sect] = symaddr;
+                     /* The special local symbols don't go in the
+                        minimal symbol table, so ignore this one.  */
+                     continue;
+                   }
+                 /* Not a special stabs-in-elf symbol, do regular
+                    symbol processing.  */
+                 if (sym->section->flags & SEC_LOAD)
+                   {
+                     ms_type = mst_file_data;
                    }
                  else
                    {
-                     ms_type = mst_unknown;
+                     ms_type = mst_file_bss;
                    }
                }
              else
                {
-                 /* FIXME:  Solaris2 shared libraries include lots of
-                    odd "absolute" and "undefined" symbols, that play 
-                    hob with actions like finding what function the PC
-                    is in.  Ignore them if they aren't text, data, or bss.  */
-                 /* ms_type = mst_unknown; */
-                 continue;     /* Skip this symbol. */
+                 ms_type = mst_unknown;
                }
-             msym = record_minimal_symbol
-               ((char *) sym->name, symaddr,
-                ms_type, sym->section, objfile);
-             if (msym)
-             {
-               /* Pass symbol size field in via BFD.  FIXME!!!  */
-               unsigned long size = ((elf_symbol_type *) sym)->internal_elf_sym.st_size;
-               MSYMBOL_SIZE(msym) = size;
-             }
+           }
+         else
+           {
+             /* FIXME:  Solaris2 shared libraries include lots of
+                odd "absolute" and "undefined" symbols, that play 
+                hob with actions like finding what function the PC
+                is in.  Ignore them if they aren't text, data, or bss.  */
+             /* ms_type = mst_unknown; */
+             continue; /* Skip this symbol. */
+           }
+         msym = record_minimal_symbol
+           ((char *) sym->name, symaddr,
+            ms_type, sym->section, objfile);
+         if (msym)
+           {
+             /* Pass symbol size field in via BFD.  FIXME!!!  */
+             unsigned long size = ((elf_symbol_type *) sym)->internal_elf_sym.st_size;
+             MSYMBOL_SIZE(msym) = size;
+           }
 #ifdef SOFUN_ADDRESS_MAYBE_MISSING
-             if (msym != NULL)
-               msym->filename = filesymname;
+         if (msym != NULL)
+           msym->filename = filesymname;
 #endif
-             ELF_MAKE_MSYMBOL_SPECIAL (sym, msym);
-           }
+         ELF_MAKE_MSYMBOL_SPECIAL (sym, msym);
        }
     }
 }