[gdb/testsuite] Add untested case in gdb.gdb/complaints.exp
[deliverable/binutils-gdb.git] / gdb / machoread.c
index 3040fe7741b91b0bf4bb3a3bd8297c94c76310f7..b3bd54940b40c97b5a6050a90bb62bd8288a65f0 100644 (file)
@@ -1,5 +1,5 @@
 /* Darwin support for GDB, the GNU debugger.
-   Copyright (C) 2008-2018 Free Software Foundation, Inc.
+   Copyright (C) 2008-2021 Free Software Foundation, Inc.
 
    Contributed by AdaCore.
 
 #include "gdbcore.h"
 #include "mach-o.h"
 #include "aout/stab_gnu.h"
-#include "vec.h"
-#include "psympriv.h"
 #include "complaints.h"
 #include "gdb_bfd.h"
 #include <string>
 #include <algorithm>
+#include "dwarf2/public.h"
 
 /* If non-zero displays debugging message.  */
 static unsigned int mach_o_debug_level = 0;
@@ -90,7 +89,7 @@ macho_symtab_add_minsym (minimal_symbol_reader &reader,
   if (sym->name == NULL || *sym->name == '\0')
     {
       /* Skip names that don't exist (shouldn't happen), or names
-         that are null strings (may happen).  */
+        that are null strings (may happen).  */
       return;
     }
 
@@ -103,37 +102,37 @@ macho_symtab_add_minsym (minimal_symbol_reader &reader,
       symaddr = sym->value + sym->section->vma;
 
       if (sym->section == bfd_abs_section_ptr)
-        ms_type = mst_abs;
+       ms_type = mst_abs;
       else if (sym->section->flags & SEC_CODE)
-        {
-          if (sym->flags & (BSF_GLOBAL | BSF_WEAK))
-            ms_type = mst_text;
-          else
-            ms_type = mst_file_text;
-        }
+       {
+         if (sym->flags & (BSF_GLOBAL | BSF_WEAK))
+           ms_type = mst_text;
+         else
+           ms_type = mst_file_text;
+       }
       else if (sym->section->flags & SEC_ALLOC)
-        {
-          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)
-            {
-              /* 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;
-            }
-          else
-            ms_type = mst_unknown;
-        }
+       {
+         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)
+           {
+             /* 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;
+           }
+         else
+           ms_type = mst_unknown;
+       }
       else
-        return;        /* Skip this symbol.  */
+       return; /* Skip this symbol.  */
 
       reader.record_with_info (sym->name, symaddr, ms_type,
                               gdb_bfd_section_index (objfile->obfd,
@@ -182,133 +181,133 @@ macho_symtab_read (minimal_symbol_reader &reader,
       bfd_mach_o_asymbol *mach_o_sym = (bfd_mach_o_asymbol *)sym;
 
       switch (state)
-        {
-        case S_NO_SO:
+       {
+       case S_NO_SO:
          if (mach_o_sym->n_type == N_SO)
-            {
-              /* Start of object stab.  */
+           {
+             /* Start of object stab.  */
              if (sym->name == NULL || sym->name[0] == 0)
-                {
-                  /* Unexpected empty N_SO.  */
-                  complaint (_("Unexpected empty N_SO stab"));
-                }
-              else
-                {
-                  file_so = sym;
-                  state = S_FIRST_SO;
-                }
-            }
-          else if (sym->flags & BSF_DEBUGGING)
-            {
-              if (mach_o_sym->n_type == N_OPT)
-                {
-                  /* No complaint for OPT.  */
-                  break;
-                }
-
-              /* Debugging symbols are not expected here.  */
-              complaint (_("%s: Unexpected debug stab outside SO markers"),
-                         objfile_name (objfile));
-            }
-          else
-            {
-              /* Non-debugging symbols go to the minimal symbol table.  */
-              macho_symtab_add_minsym (reader, objfile, sym);
-            }
-          break;
-
-        case S_FIRST_SO:
-        case S_SECOND_SO:
+               {
+                 /* Unexpected empty N_SO.  */
+                 complaint (_("Unexpected empty N_SO stab"));
+               }
+             else
+               {
+                 file_so = sym;
+                 state = S_FIRST_SO;
+               }
+           }
+         else if (sym->flags & BSF_DEBUGGING)
+           {
+             if (mach_o_sym->n_type == N_OPT)
+               {
+                 /* No complaint for OPT.  */
+                 break;
+               }
+
+             /* Debugging symbols are not expected here.  */
+             complaint (_("%s: Unexpected debug stab outside SO markers"),
+                        objfile_name (objfile));
+           }
+         else
+           {
+             /* Non-debugging symbols go to the minimal symbol table.  */
+             macho_symtab_add_minsym (reader, objfile, sym);
+           }
+         break;
+
+       case S_FIRST_SO:
+       case S_SECOND_SO:
          if (mach_o_sym->n_type == N_SO)
-            {
+           {
              if (sym->name == NULL || sym->name[0] == 0)
-                {
-                  /* Unexpected empty N_SO.  */
-                  complaint (_("Empty SO section"));
-                  state = S_NO_SO;
-                }
-              else if (state == S_FIRST_SO)
-                {
-                  /* Second SO stab for the file name.  */
-                  file_so = sym;
-                  state = S_SECOND_SO;
-                }
-              else
-                complaint (_("Three SO in a raw"));
-            }
-          else if (mach_o_sym->n_type == N_OSO)
-            {
+               {
+                 /* Unexpected empty N_SO.  */
+                 complaint (_("Empty SO section"));
+                 state = S_NO_SO;
+               }
+             else if (state == S_FIRST_SO)
+               {
+                 /* Second SO stab for the file name.  */
+                 file_so = sym;
+                 state = S_SECOND_SO;
+               }
+             else
+               complaint (_("Three SO in a raw"));
+           }
+         else if (mach_o_sym->n_type == N_OSO)
+           {
              if (sym->name == NULL || sym->name[0] == 0)
-                {
-                  /* Empty OSO.  Means that this file was compiled with
-                     stabs.  */
-                  state = S_STAB_FILE;
-                  warning (_("stabs debugging not supported for %s"),
-                           file_so->name);
-                }
-              else
-                {
-                  /* Non-empty OSO for a Dwarf file.  */
-                  oso_file = symbol_table + i;
-                  nbr_syms = 0;
-                  state = S_DWARF_FILE;
-                }
-            }
-          else
-            complaint (_("Unexpected stab after SO"));
-          break;
-
-        case S_STAB_FILE:
-        case S_DWARF_FILE:
+               {
+                 /* Empty OSO.  Means that this file was compiled with
+                    stabs.  */
+                 state = S_STAB_FILE;
+                 warning (_("stabs debugging not supported for %s"),
+                          file_so->name);
+               }
+             else
+               {
+                 /* Non-empty OSO for a Dwarf file.  */
+                 oso_file = symbol_table + i;
+                 nbr_syms = 0;
+                 state = S_DWARF_FILE;
+               }
+           }
+         else
+           complaint (_("Unexpected stab after SO"));
+         break;
+
+       case S_STAB_FILE:
+       case S_DWARF_FILE:
          if (mach_o_sym->n_type == N_SO)
-            {
+           {
              if (sym->name == NULL || sym->name[0] == 0)
-                {
-                  /* End of file.  */
-                  if (state == S_DWARF_FILE)
+               {
+                 /* End of file.  */
+                 if (state == S_DWARF_FILE)
                    oso_vector_ptr->emplace_back (oso_file, symbol_table + i,
                                                  nbr_syms);
-                  state = S_NO_SO;
-                }
-              else
-                {
-                  complaint (_("Missing nul SO"));
-                  file_so = sym;
-                  state = S_FIRST_SO;
-                }
-            }
-          else if (sym->flags & BSF_DEBUGGING)
-            {
-              if (state == S_STAB_FILE)
-                {
-                  /* FIXME: to be implemented.  */
-                }
-              else
-                {
-                  switch (mach_o_sym->n_type)
-                    {
-                    case N_FUN:
-                      if (sym->name == NULL || sym->name[0] == 0)
-                        break;
-                      /* Fall through.  */
-                    case N_STSYM:
-                      /* Interesting symbol.  */
-                      nbr_syms++;
-                      break;
-                    case N_ENSYM:
-                    case N_BNSYM:
-                    case N_GSYM:
-                      break;
-                    default:
-                      complaint (_("unhandled stab for dwarf OSO file"));
-                      break;
-                    }
-                }
-            }
-          else
-            complaint (_("non-debugging symbol within SO"));
-          break;
-        }
+                 state = S_NO_SO;
+               }
+             else
+               {
+                 complaint (_("Missing nul SO"));
+                 file_so = sym;
+                 state = S_FIRST_SO;
+               }
+           }
+         else if (sym->flags & BSF_DEBUGGING)
+           {
+             if (state == S_STAB_FILE)
+               {
+                 /* FIXME: to be implemented.  */
+               }
+             else
+               {
+                 switch (mach_o_sym->n_type)
+                   {
+                   case N_FUN:
+                     if (sym->name == NULL || sym->name[0] == 0)
+                       break;
+                     /* Fall through.  */
+                   case N_STSYM:
+                     /* Interesting symbol.  */
+                     nbr_syms++;
+                     break;
+                   case N_ENSYM:
+                   case N_BNSYM:
+                   case N_GSYM:
+                     break;
+                   default:
+                     complaint (_("unhandled stab for dwarf OSO file"));
+                     break;
+                   }
+               }
+           }
+         else
+           complaint (_("non-debugging symbol within SO"));
+         break;
+       }
     }
 
   if (state != S_NO_SO)
@@ -356,8 +355,8 @@ struct macho_sym_hash_entry
 
 static struct bfd_hash_entry *
 macho_sym_hash_newfunc (struct bfd_hash_entry *entry,
-                        struct bfd_hash_table *table,
-                        const char *string)
+                       struct bfd_hash_table *table,
+                       const char *string)
 {
   struct macho_sym_hash_entry *ret = (struct macho_sym_hash_entry *) entry;
 
@@ -365,7 +364,7 @@ macho_sym_hash_newfunc (struct bfd_hash_entry *entry,
      subclass.  */
   if (ret == NULL)
     ret = (struct macho_sym_hash_entry *) bfd_hash_allocate (table,
-                                                             sizeof (* ret));
+                                                            sizeof (* ret));
   if (ret == NULL)
     return NULL;
 
@@ -409,7 +408,7 @@ macho_resolve_oso_sym_with_minsym (struct objfile *main_objfile, asymbol *sym)
 static void
 macho_add_oso_symfile (oso_el *oso, const gdb_bfd_ref_ptr &abfd,
                       const char *name,
-                       struct objfile *main_objfile,
+                      struct objfile *main_objfile,
                       symfile_add_flags symfile_flags)
 {
   int storage;
@@ -429,7 +428,7 @@ macho_add_oso_symfile (oso_el *oso, const gdb_bfd_ref_ptr &abfd,
   if (!bfd_check_format (abfd.get (), bfd_object))
     {
       warning (_("`%s': can't read symbols: %s."), oso->name,
-               bfd_errmsg (bfd_get_error ()));
+              bfd_errmsg (bfd_get_error ()));
       return;
     }
 
@@ -440,8 +439,8 @@ macho_add_oso_symfile (oso_el *oso, const gdb_bfd_ref_ptr &abfd,
     }
 
   if (!bfd_hash_table_init_n (&table, macho_sym_hash_newfunc,
-                              sizeof (struct macho_sym_hash_entry),
-                              oso->nbr_syms))
+                             sizeof (struct macho_sym_hash_entry),
+                             oso->nbr_syms))
     {
       warning (_("`%s': can't create hash table"), oso->name);
       return;
@@ -467,42 +466,42 @@ macho_add_oso_symfile (oso_el *oso, const gdb_bfd_ref_ptr &abfd,
       bfd_mach_o_asymbol *mach_o_sym = (bfd_mach_o_asymbol *)sym;
 
       switch (mach_o_sym->n_type)
-        {
-        case N_ENSYM:
-        case N_BNSYM:
-        case N_GSYM:
-          sym = NULL;
-          break;
-        case N_FUN:
-          if (sym->name == NULL || sym->name[0] == 0)
-            sym = NULL;
-          break;
-        case N_STSYM:
-          break;
-        default:
-          sym = NULL;
-          break;
-        }
+       {
+       case N_ENSYM:
+       case N_BNSYM:
+       case N_GSYM:
+         sym = NULL;
+         break;
+       case N_FUN:
+         if (sym->name == NULL || sym->name[0] == 0)
+           sym = NULL;
+         break;
+       case N_STSYM:
+         break;
+       default:
+         sym = NULL;
+         break;
+       }
       if (sym != NULL)
-        {
-          struct macho_sym_hash_entry *ent;
-
-          ent = (struct macho_sym_hash_entry *)
-            bfd_hash_lookup (&table, sym->name, TRUE, FALSE);
-          if (ent->sym != NULL)
-            complaint (_("Duplicated symbol %s in symbol table"), sym->name);
-          else
-            {
-              if (mach_o_debug_level > 4)
-                {
-                  struct gdbarch *arch = get_objfile_arch (main_objfile);
-                  printf_unfiltered
-                    (_("Adding symbol %s (addr: %s)\n"),
-                     sym->name, paddress (arch, sym->value));
-                }
-              ent->sym = sym;
-            }
-        }
+       {
+         struct macho_sym_hash_entry *ent;
+
+         ent = (struct macho_sym_hash_entry *)
+           bfd_hash_lookup (&table, sym->name, TRUE, FALSE);
+         if (ent->sym != NULL)
+           complaint (_("Duplicated symbol %s in symbol table"), sym->name);
+         else
+           {
+             if (mach_o_debug_level > 4)
+               {
+                 struct gdbarch *arch = main_objfile->arch ();
+                 printf_unfiltered
+                   (_("Adding symbol %s (addr: %s)\n"),
+                    sym->name, paddress (arch, sym->value));
+               }
+             ent->sym = sym;
+           }
+       }
     }
 
   /* Relocate symbols of the OSO.  */
@@ -512,84 +511,84 @@ macho_add_oso_symfile (oso_el *oso, const gdb_bfd_ref_ptr &abfd,
       bfd_mach_o_asymbol *mach_o_sym = (bfd_mach_o_asymbol *)sym;
 
       if (mach_o_sym->n_type & BFD_MACH_O_N_STAB)
-        continue;
+       continue;
       if ((mach_o_sym->n_type & BFD_MACH_O_N_TYPE) == BFD_MACH_O_N_UNDF
-           && sym->value != 0)
-        {
-          /* For common symbol use the min symtab and modify the OSO
-             symbol table.  */
-          CORE_ADDR res;
-
-          res = macho_resolve_oso_sym_with_minsym (main_objfile, sym);
-          if (res != 0)
-            {
-              sym->section = bfd_com_section_ptr;
-              sym->value = res;
-            }
-        }
+          && sym->value != 0)
+       {
+         /* For common symbol use the min symtab and modify the OSO
+            symbol table.  */
+         CORE_ADDR res;
+
+         res = macho_resolve_oso_sym_with_minsym (main_objfile, sym);
+         if (res != 0)
+           {
+             sym->section = bfd_com_section_ptr;
+             sym->value = res;
+           }
+       }
       else if ((mach_o_sym->n_type & BFD_MACH_O_N_TYPE) == BFD_MACH_O_N_SECT)
-        {
-          /* Normal symbol.  */
-          asection *sec = sym->section;
-          bfd_mach_o_section *msec;
-          unsigned int sec_type;
-
-          /* Skip buggy ones.  */
-          if (sec == NULL || sections_rebased[sec->index] != 0)
-            continue;
-
-          /* Only consider regular, non-debugging sections.  */
-          msec = bfd_mach_o_get_mach_o_section (sec);
-          sec_type = msec->flags & BFD_MACH_O_SECTION_TYPE_MASK;
-          if ((sec_type == BFD_MACH_O_S_REGULAR
-               || sec_type == BFD_MACH_O_S_ZEROFILL)
-              && (msec->flags & BFD_MACH_O_S_ATTR_DEBUG) == 0)
-            {
-              CORE_ADDR addr = 0;
-
-              if ((mach_o_sym->n_type & BFD_MACH_O_N_EXT) != 0)
-                {
-                  /* Use the min symtab for global symbols.  */
-                  addr = macho_resolve_oso_sym_with_minsym (main_objfile, sym);
-                }
-              else
-                {
-                  struct macho_sym_hash_entry *ent;
-
-                  ent = (struct macho_sym_hash_entry *)
-                    bfd_hash_lookup (&table, sym->name, FALSE, FALSE);
-                  if (ent != NULL)
-                    addr = bfd_asymbol_value (ent->sym);
-                }
-
-              /* Adjust the section.  */
-              if (addr != 0)
-                {
-                  CORE_ADDR res = addr - sym->value;
-
-                  if (mach_o_debug_level > 3)
-                    {
-                      struct gdbarch *arch = get_objfile_arch (main_objfile);
-                      printf_unfiltered
-                        (_("resolve sect %s with %s (set to %s)\n"),
-                         sec->name, sym->name,
-                         paddress (arch, res));
-                    }
-                  bfd_set_section_vma (abfd.get (), sec, res);
-                  sections_rebased[sec->index] = 1;
-                }
-            }
-          else
-            {
-              /* Mark the section as never rebased.  */
-              sections_rebased[sec->index] = 2;
-            }
-        }
+       {
+         /* Normal symbol.  */
+         asection *sec = sym->section;
+         bfd_mach_o_section *msec;
+         unsigned int sec_type;
+
+         /* Skip buggy ones.  */
+         if (sec == NULL || sections_rebased[sec->index] != 0)
+           continue;
+
+         /* Only consider regular, non-debugging sections.  */
+         msec = bfd_mach_o_get_mach_o_section (sec);
+         sec_type = msec->flags & BFD_MACH_O_SECTION_TYPE_MASK;
+         if ((sec_type == BFD_MACH_O_S_REGULAR
+              || sec_type == BFD_MACH_O_S_ZEROFILL)
+             && (msec->flags & BFD_MACH_O_S_ATTR_DEBUG) == 0)
+           {
+             CORE_ADDR addr = 0;
+
+             if ((mach_o_sym->n_type & BFD_MACH_O_N_EXT) != 0)
+               {
+                 /* Use the min symtab for global symbols.  */
+                 addr = macho_resolve_oso_sym_with_minsym (main_objfile, sym);
+               }
+             else
+               {
+                 struct macho_sym_hash_entry *ent;
+
+                 ent = (struct macho_sym_hash_entry *)
+                   bfd_hash_lookup (&table, sym->name, FALSE, FALSE);
+                 if (ent != NULL)
+                   addr = bfd_asymbol_value (ent->sym);
+               }
+
+             /* Adjust the section.  */
+             if (addr != 0)
+               {
+                 CORE_ADDR res = addr - sym->value;
+
+                 if (mach_o_debug_level > 3)
+                   {
+                     struct gdbarch *arch = main_objfile->arch ();
+                     printf_unfiltered
+                       (_("resolve sect %s with %s (set to %s)\n"),
+                        sec->name, sym->name,
+                        paddress (arch, res));
+                   }
+                 bfd_set_section_vma (sec, res);
+                 sections_rebased[sec->index] = 1;
+               }
+           }
+         else
+           {
+             /* Mark the section as never rebased.  */
+             sections_rebased[sec->index] = 2;
+           }
+       }
     }
 
   bfd_hash_table_free (&table);
 
-  /* We need to clear SYMFILE_MAINLINE to avoid interractive question
+  /* We need to clear SYMFILE_MAINLINE to avoid interactive question
      from symfile.c:symbol_file_add_with_addrs_or_offsets.  */
   symbol_file_add_from_bfd
     (abfd.get (), name, symfile_flags & ~(SYMFILE_MAINLINE | SYMFILE_VERBOSE),
@@ -625,35 +624,35 @@ macho_symfile_read_all_oso (std::vector<oso_el> *oso_vector_ptr,
       pfx_len = get_archive_prefix_len (oso->name);
       if (pfx_len > 0)
        {
-          int last_ix;
-          oso_el *oso2;
-          int ix2;
+         int last_ix;
+         oso_el *oso2;
+         int ix2;
 
          std::string archive_name (oso->name, pfx_len);
 
-          /* Compute number of oso for this archive.  */
-          for (last_ix = ix; last_ix < oso_vector_ptr->size (); last_ix++)
-            {
+         /* Compute number of oso for this archive.  */
+         for (last_ix = ix; last_ix < oso_vector_ptr->size (); last_ix++)
+           {
              oso2 = &(*oso_vector_ptr)[last_ix];
-              if (strncmp (oso2->name, archive_name.c_str (), pfx_len) != 0)
-                break;
-            }
+             if (strncmp (oso2->name, archive_name.c_str (), pfx_len) != 0)
+               break;
+           }
 
          /* Open the archive and check the format.  */
          gdb_bfd_ref_ptr archive_bfd (gdb_bfd_open (archive_name.c_str (),
-                                                    gnutarget, -1));
+                                                    gnutarget));
          if (archive_bfd == NULL)
            {
              warning (_("Could not open OSO archive file \"%s\""),
                       archive_name.c_str ());
-              ix = last_ix;
+             ix = last_ix;
              continue;
            }
          if (!bfd_check_format (archive_bfd.get (), bfd_archive))
            {
              warning (_("OSO archive file \"%s\" not an archive."),
                       archive_name.c_str ());
-              ix = last_ix;
+             ix = last_ix;
              continue;
            }
 
@@ -664,59 +663,59 @@ macho_symfile_read_all_oso (std::vector<oso_el> *oso_vector_ptr,
            {
              warning (_("Could not read archive members out of "
                         "OSO archive \"%s\""), archive_name.c_str ());
-              ix = last_ix;
+             ix = last_ix;
              continue;
            }
 
-          /* Load all oso in this library.  */
+         /* Load all oso in this library.  */
          while (member_bfd != NULL)
            {
-             const char *member_name = member_bfd->filename;
-              int member_len = strlen (member_name);
-
-              /* If this member is referenced, add it as a symfile.  */
-              for (ix2 = ix; ix2 < last_ix; ix2++)
-                {
-                  oso2 = &(*oso_vector_ptr)[ix2];
-
-                  if (oso2->name
-                      && strlen (oso2->name) == pfx_len + member_len + 2
-                      && !memcmp (member_name, oso2->name + pfx_len + 1,
-                                  member_len))
-                    {
-                      macho_add_oso_symfile (oso2, member_bfd,
-                                            bfd_get_filename (member_bfd),
-                                             main_objfile, symfile_flags);
-                      oso2->name = NULL;
-                      break;
-                    }
-                }
+             const char *member_name = bfd_get_filename (member_bfd.get ());
+             int member_len = strlen (member_name);
+
+             /* If this member is referenced, add it as a symfile.  */
+             for (ix2 = ix; ix2 < last_ix; ix2++)
+               {
+                 oso2 = &(*oso_vector_ptr)[ix2];
+
+                 if (oso2->name
+                     && strlen (oso2->name) == pfx_len + member_len + 2
+                     && !memcmp (member_name, oso2->name + pfx_len + 1,
+                                 member_len))
+                   {
+                     macho_add_oso_symfile (oso2, member_bfd,
+                                            bfd_get_filename (member_bfd.get ()),
+                                            main_objfile, symfile_flags);
+                     oso2->name = NULL;
+                     break;
+                   }
+               }
 
              member_bfd = gdb_bfd_openr_next_archived_file (archive_bfd.get (),
                                                             member_bfd.get ());
            }
-          for (ix2 = ix; ix2 < last_ix; ix2++)
-            {
-              oso_el *oso2 = &(*oso_vector_ptr)[ix2];
-
-              if (oso2->name != NULL)
-                warning (_("Could not find specified archive member "
-                           "for OSO name \"%s\""), oso->name);
-            }
-          ix = last_ix;
+         for (ix2 = ix; ix2 < last_ix; ix2++)
+           {
+             oso2 = &(*oso_vector_ptr)[ix2];
+
+             if (oso2->name != NULL)
+               warning (_("Could not find specified archive member "
+                          "for OSO name \"%s\""), oso->name);
+           }
+         ix = last_ix;
        }
       else
        {
-         gdb_bfd_ref_ptr abfd (gdb_bfd_open (oso->name, gnutarget, -1));
+         gdb_bfd_ref_ptr abfd (gdb_bfd_open (oso->name, gnutarget));
          if (abfd == NULL)
-            warning (_("`%s': can't open to read symbols: %s."), oso->name,
-                     bfd_errmsg (bfd_get_error ()));
-          else
-            macho_add_oso_symfile (oso, abfd, oso->name, main_objfile,
+           warning (_("`%s': can't open to read symbols: %s."), oso->name,
+                    bfd_errmsg (bfd_get_error ()));
+         else
+           macho_add_oso_symfile (oso, abfd, oso->name, main_objfile,
                                   symfile_flags);
 
-          ix++;
-        }
+         ix++;
+       }
     }
 }
 
@@ -751,7 +750,7 @@ macho_check_dsym (struct objfile *objfile, std::string *filenamep)
     return NULL;
 
   if (bfd_mach_o_lookup_command (objfile->obfd,
-                                 BFD_MACH_O_LC_UUID, &main_uuid) == 0)
+                                BFD_MACH_O_LC_UUID, &main_uuid) == 0)
     {
       warning (_("can't find UUID in %s"), objfile_name (objfile));
       return NULL;
@@ -770,13 +769,13 @@ macho_check_dsym (struct objfile *objfile, std::string *filenamep)
     }
 
   if (bfd_mach_o_lookup_command (dsym_bfd.get (),
-                                 BFD_MACH_O_LC_UUID, &dsym_uuid) == 0)
+                                BFD_MACH_O_LC_UUID, &dsym_uuid) == 0)
     {
       warning (_("can't find UUID in %s"), dsym_filename);
       return NULL;
     }
   if (memcmp (dsym_uuid->command.uuid.uuid, main_uuid->command.uuid.uuid,
-              sizeof (main_uuid->command.uuid.uuid)))
+             sizeof (main_uuid->command.uuid.uuid)))
     {
       warning (_("dsym file UUID doesn't match the one in %s"),
               objfile_name (objfile));
@@ -816,7 +815,7 @@ macho_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
 
          symbol_table.resize (storage_needed / sizeof (asymbol *));
 
-          minimal_symbol_reader reader (objfile);
+         minimal_symbol_reader reader (objfile);
 
          symcount = bfd_canonicalize_symtab (objfile->obfd,
                                              symbol_table.data ());
@@ -829,7 +828,7 @@ macho_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
          macho_symtab_read (reader, objfile, symcount, symbol_table.data (),
                             &oso_vector);
 
-          reader.install ();
+         reader.install ();
        }
 
       /* Try to read .eh_frame / .debug_frame.  */
@@ -842,28 +841,27 @@ macho_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
       gdb_bfd_ref_ptr dsym_bfd (macho_check_dsym (objfile, &dsym_filename));
       if (dsym_bfd != NULL)
        {
-          struct bfd_section *asect, *dsect;
+         struct bfd_section *asect, *dsect;
 
          if (mach_o_debug_level > 0)
            printf_unfiltered (_("dsym file found\n"));
 
-          /* Set dsym section size.  */
-          for (asect = objfile->obfd->sections, dsect = dsym_bfd->sections;
-               asect && dsect;
-               asect = asect->next, dsect = dsect->next)
-            {
-              if (strcmp (asect->name, dsect->name) != 0)
-                break;
-              bfd_set_section_size (dsym_bfd.get (), dsect,
-                                    bfd_get_section_size (asect));
-            }
+         /* Set dsym section size.  */
+         for (asect = objfile->obfd->sections, dsect = dsym_bfd->sections;
+              asect && dsect;
+              asect = asect->next, dsect = dsect->next)
+           {
+             if (strcmp (asect->name, dsect->name) != 0)
+               break;
+             bfd_set_section_size (dsect, bfd_section_size (asect));
+           }
 
          /* Add the dsym file as a separate file.  */
-          symbol_file_add_separate (dsym_bfd.get (), dsym_filename.c_str (),
+         symbol_file_add_separate (dsym_bfd.get (), dsym_filename.c_str (),
                                    symfile_flags, objfile);
 
          /* Don't try to read dwarf2 from main file or shared libraries.  */
-          return;
+         return;
        }
     }
 
@@ -880,7 +878,7 @@ macho_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
 
 static bfd_byte *
 macho_symfile_relocate (struct objfile *objfile, asection *sectp,
-                        bfd_byte *buf)
+                       bfd_byte *buf)
 {
   bfd *abfd = objfile->obfd;
 
@@ -891,7 +889,7 @@ macho_symfile_relocate (struct objfile *objfile, asection *sectp,
 
   if (mach_o_debug_level > 0)
     printf_unfiltered (_("Relocate section '%s' of %s\n"),
-                       sectp->name, objfile_name (objfile));
+                      sectp->name, objfile_name (objfile));
 
   return bfd_simple_get_relocated_section_contents (abfd, sectp, buf, NULL);
 }
@@ -903,18 +901,13 @@ macho_symfile_finish (struct objfile *objfile)
 
 static void
 macho_symfile_offsets (struct objfile *objfile,
-                       const section_addr_info &addrs)
+                      const section_addr_info &addrs)
 {
   unsigned int i;
   struct obj_section *osect;
 
   /* Allocate section_offsets.  */
-  objfile->num_sections = bfd_count_sections (objfile->obfd);
-  objfile->section_offsets = (struct section_offsets *)
-    obstack_alloc (&objfile->objfile_obstack,
-                   SIZEOF_N_SECTION_OFFSETS (objfile->num_sections));
-  memset (objfile->section_offsets, 0,
-          SIZEOF_N_SECTION_OFFSETS (objfile->num_sections));
+  objfile->section_offsets.assign (gdb_bfd_count_sections (objfile->obfd), 0);
 
   /* This code is run when we first add the objfile with
      symfile_add_with_addrs_or_offsets, when "addrs" not "offsets" are
@@ -933,7 +926,7 @@ macho_symfile_offsets (struct objfile *objfile,
 
          if (bfd_sect_name == addrs[i].name)
            {
-             obj_section_offset (osect) = addrs[i].addr;
+             osect->set_offset (addrs[i].addr);
              break;
            }
        }
@@ -958,18 +951,17 @@ static const struct sym_fns macho_sym_fns = {
   macho_new_init,               /* init anything gbl to entire symtab */
   macho_symfile_init,           /* read initial info, setup for sym_read() */
   macho_symfile_read,           /* read a symbol file into symtab */
-  NULL,                                /* sym_read_psymbols */
   macho_symfile_finish,         /* finished with file, cleanup */
   macho_symfile_offsets,        /* xlate external to internal form */
   default_symfile_segments,    /* Get segment information from a file.  */
   NULL,
   macho_symfile_relocate,      /* Relocate a debug section.  */
   NULL,                                /* sym_get_probes */
-  &psym_functions
 };
 
+void _initialize_machoread ();
 void
-_initialize_machoread (void)
+_initialize_machoread ()
 {
   add_symtab_fns (bfd_target_mach_o_flavour, &macho_sym_fns);
 
This page took 0.049485 seconds and 4 git commands to generate.