* som.c (som_bfd_prep_for_ar_write): Ignore non-SOM objects.
authorJeff Law <law@redhat.com>
Thu, 24 Mar 1994 17:21:50 +0000 (17:21 +0000)
committerJeff Law <law@redhat.com>
Thu, 24 Mar 1994 17:21:50 +0000 (17:21 +0000)
        (som_bfd_ar_write_symbol_stuff, som_write_armap): Likewise.

bfd/ChangeLog
bfd/som.c

index e8924d41447bc425c1eb40ffc80b5543c332d837..59531159a90e2a3b28f4a566fd602be49d9bade8 100644 (file)
@@ -1,3 +1,12 @@
+Thu Mar 24 09:21:13 1994  Jeffrey A. Law  (law@snake.cs.utah.edu)
+
+       * som.c (som_bfd_prep_for_ar_write): Ignore non-SOM objects.
+       (som_bfd_ar_write_symbol_stuff, som_write_armap): Likewise.
+
+Wed Mar 23 14:29:31 1994  David J. Mackenzie  (djm@rtl.cygnus.com)
+
+       * netbsd386.c (N_SET_FLAGS): Delete the old definition.
+
 Wed Mar 23 14:58:44 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
 
        Clean up the relaxing code for the new linker.
index a75b26dfc2a7cbf39eff34bd5752b57cd9226174..43f29f567d763ac052a1899f9fd857f4a4f8d4f2 100644 (file)
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -3118,7 +3118,7 @@ som_begin_writing (abfd)
      zeros are filled in.  Ugh.  */
   if (abfd->flags & EXEC_P)
     current_offset = SOM_ALIGN (current_offset, PA_PAGESIZE);
-  if (bfd_seek (abfd, current_offset, SEEK_SET) < 0)
+  if (bfd_seek (abfd, current_offset - 1, SEEK_SET) < 0)
     {
       bfd_set_error (bfd_error_system_call);
       return false;
@@ -5071,6 +5071,14 @@ som_bfd_prep_for_ar_write (abfd, num_syms, stringsize)
       unsigned int curr_count, i;
       som_symbol_type *sym;
 
+      /* Don't bother for non-SOM objects.  */
+      if (curr_bfd->format != bfd_object
+         || curr_bfd->xvec->flavour != bfd_target_som_flavour)
+       {
+         curr_bfd = curr_bfd->next;
+         continue;
+       }
+
       /* Make sure the symbol table has been read, then snag a pointer
         to it.  It's a little slimey to grab the symbols via obj_som_symtab,
         but doing so avoids allocating lots of extra memory.  */
@@ -5260,6 +5268,14 @@ som_bfd_ar_write_symbol_stuff (abfd, nsyms, string_size, lst)
       unsigned int curr_count, i;
       som_symbol_type *sym;
 
+      /* Don't bother for non-SOM objects.  */
+      if (curr_bfd->format != bfd_object
+         || curr_bfd->xvec->flavour != bfd_target_som_flavour)
+       {
+         curr_bfd = curr_bfd->next;
+         continue;
+       }
+
       /* Make sure the symbol table has been read, then snag a pointer
         to it.  It's a little slimey to grab the symbols via obj_som_symtab,
         but doing so avoids allocating lots of extra memory.  */
@@ -5478,7 +5494,10 @@ som_write_armap (abfd)
   lst.module_count = 0;
   while (curr_bfd != NULL)
     {
-      lst.module_count++;
+      /* Only true SOM objects count.  */
+      if (curr_bfd->format == bfd_object
+         && curr_bfd->xvec->flavour == bfd_target_som_flavour)
+       lst.module_count++;
       curr_bfd = curr_bfd->next;
     }
   lst.module_limit = lst.module_count;