Add a symbol's value to the computed frag offset, rather than overwriting it.
[deliverable/binutils-gdb.git] / gdb / somread.c
index bbbaa98a7c03521da092f288708ac3938fbf9105..489a33095aba5393346cd7c0c72f882308d76828 100644 (file)
@@ -43,7 +43,7 @@ static void
 som_new_init PARAMS ((struct objfile *));
 
 static void
-som_symfile_read PARAMS ((struct objfile *, struct section_offsets *, int));
+som_symfile_read PARAMS ((struct objfile *, int));
 
 static void
 som_symfile_finish PARAMS ((struct objfile *));
@@ -52,13 +52,13 @@ static void
 som_symtab_read PARAMS ((bfd *, struct objfile *,
                         struct section_offsets *));
 
-static struct section_offsets *
-  som_symfile_offsets PARAMS ((struct objfile *, CORE_ADDR));
+static void
+som_symfile_offsets PARAMS ((struct objfile *, struct section_addr_info *));
 
 /* FIXME: These should really be in a common header somewhere */
 
 extern void
-hpread_build_psymtabs PARAMS ((struct objfile *, struct section_offsets *, int));
+hpread_build_psymtabs PARAMS ((struct objfile *, int));
 
 extern void
 hpread_symfile_finish PARAMS ((struct objfile *));
@@ -356,9 +356,8 @@ som_symtab_read (abfd, objfile, section_offsets)
    capability even for files compiled without -g.  */
 
 static void
-som_symfile_read (objfile, section_offsets, mainline)
+som_symfile_read (objfile, mainline)
      struct objfile *objfile;
-     struct section_offsets *section_offsets;
      int mainline;
 {
   bfd *abfd = objfile->obfd;
@@ -386,20 +385,20 @@ som_symfile_read (objfile, section_offsets, mainline)
      actually scan the DNTT. It does scan the linker symbol
      table and thus build up a "minimal symbol table". */
 
-  som_symtab_read (abfd, objfile, section_offsets);
+  som_symtab_read (abfd, objfile, objfile->section_offsets);
 
   /* Now read information from the stabs debug sections.
      This is a no-op for SOM.
      Perhaps it is intended for some kind of mixed STABS/SOM
      situation? */
-  stabsect_build_psymtabs (objfile, section_offsets, mainline,
+  stabsect_build_psymtabs (objfile, mainline,
                           "$GDB_SYMBOLS$", "$GDB_STRINGS$", "$TEXT$");
 
   /* Now read the native debug information. 
      This builds the psymtab. This used to be done via a scan of
      the DNTT, but is now done via the PXDB-built quick-lookup tables
      together with a scan of the GNTT. See hp-psymtab-read.c. */
-  hpread_build_psymtabs (objfile, section_offsets, mainline);
+  hpread_build_psymtabs (objfile, mainline);
 
   /* Install any minimal symbols that have been collected as the current
      minimal symbols for this objfile. 
@@ -460,57 +459,26 @@ som_symfile_init (objfile)
 
    Plain and simple for now.  */
 
-static struct section_offsets *
-som_symfile_offsets (objfile, addr)
+static void
+som_symfile_offsets (objfile, addrs)
      struct objfile *objfile;
-     CORE_ADDR addr;
+     struct section_addr_info *addrs;
 {
-  struct section_offsets *section_offsets;
   int i;
 
   objfile->num_sections = SECT_OFF_MAX;
-  section_offsets = (struct section_offsets *)
+  objfile->section_offsets = (struct section_offsets *)
     obstack_alloc (&objfile->psymbol_obstack, SIZEOF_SECTION_OFFSETS);
 
   /* First see if we're a shared library.  If so, get the section
-     offsets from the library, else get them from addr.  */
-  if (!som_solib_section_offsets (objfile, section_offsets))
+     offsets from the library, else get them from addrs.  */
+  if (!som_solib_section_offsets (objfile, objfile->section_offsets))
     {
       for (i = 0; i < SECT_OFF_MAX; i++)
-       ANOFFSET (section_offsets, i) = addr;
+       ANOFFSET (objfile->section_offsets, i) = addrs -> text_addr;
     }
-
-  return section_offsets;
 }
 
-
-
-/* Check if a given symbol NAME is in the import list
-   of OBJFILE.
-   1 => true, 0 => false
-   This is used in hp_symtab_read.c to deal with static variables
-   that are defined in a different shared library than the one
-   whose symbols are being processed. */
-
-int
-is_in_import_list (name, objfile)
-     char *name;
-     struct objfile *objfile;
-{
-  register int i;
-
-  if (!objfile ||
-      !name ||
-      !*name)
-    return 0;
-
-  for (i = 0; i < objfile->import_list_size; i++)
-    if (objfile->import_list[i] && STREQ (name, objfile->import_list[i]))
-      return 1;
-  return 0;
-}
-
-
 /* Read in and initialize the SOM import list which is present
    for all executables and shared libraries.  The import list
    consists of the symbols that are referenced in OBJFILE but
This page took 0.025168 seconds and 4 git commands to generate.