import insight-2000-02-04 snapshot (2nd try)
[external/binutils.git] / bfd / hp300hpux.c
index ec48fd3..0772d4f 100644 (file)
@@ -1,5 +1,5 @@
 /* BFD backend for hp-ux 9000/300
-   Copyright (C) 1990, 1991, 1994, 1995 Free Software Foundation, Inc.
+   Copyright (C) 1990, 91, 94, 95, 97, 1999 Free Software Foundation, Inc.
    Written by Glenn Engel.
 
 This file is part of BFD, the Binary File Descriptor library.
@@ -336,9 +336,9 @@ MY (write_object_contents) (abfd)
 
 static void
 convert_sym_type (sym_pointer, cache_ptr, abfd)
-     struct external_nlist *sym_pointer;
+     struct external_nlist *sym_pointer ATTRIBUTE_UNUSED;
      aout_symbol_type *cache_ptr;
-     bfd *abfd;
+     bfd *abfd ATTRIBUTE_UNUSED;
 {
   int name_type;
   int new_type;
@@ -396,7 +396,12 @@ convert_sym_type (sym_pointer, cache_ptr, abfd)
            default:
              abort ();
            case N_UNDF | N_EXT:
-             new_type = N_WEAKU;
+             /* If the value is nonzero, then just treat this as a
+                 common symbol.  I don't know if this is correct in
+                 all cases, but it is more correct than treating it as
+                 a weak undefined symbol.  */
+             if (cache_ptr->symbol.value == 0)
+               new_type = N_WEAKU;
              break;
            case N_ABS | N_EXT:
              new_type = N_WEAKA;
@@ -476,10 +481,7 @@ NAME (aout,swap_exec_header_in) (abfd, raw_bytes, execp)
       rawptr = (struct aout_data_struct *) bfd_zalloc (abfd, sizeof (*rawptr));
 
       if (rawptr == NULL)
-       {
-         bfd_set_error (bfd_error_no_memory);
-         return;
-       }
+       return;
       abfd->tdata.aout_data = rawptr;
       obj_aout_subformat (abfd) = gnu_encap_format;
     }
@@ -530,10 +532,7 @@ MY (slurp_symbol_table) (abfd)
   strings = (char *) bfd_alloc (abfd,
                                symbol_bytes + SYM_EXTRA_BYTES);
   if (!strings)
-    {
-      bfd_set_error (bfd_error_no_memory);
-      return false;
-    }
+    return false;
   syms = (struct external_nlist *) (strings + SYM_EXTRA_BYTES);
   if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0
       || bfd_read ((PTR) syms, symbol_bytes, 1, abfd) != symbol_bytes)
@@ -560,10 +559,7 @@ MY (slurp_symbol_table) (abfd)
            bfd_zalloc (abfd,
                        bfd_get_symcount (abfd) * sizeof (aout_symbol_type)));
   if (cached == NULL && bfd_get_symcount (abfd) != 0)
-    {
-      bfd_set_error (bfd_error_no_memory);
-      return false;
-    }
+    return false;
 
   /* as we march thru the hp symbol table, convert it into a list of
      null terminated strings to hold the symbol names.  Make sure any
@@ -630,7 +626,7 @@ MY (swap_std_reloc_in) (abfd, bytes, cache_ptr, symbols, symcount)
      struct hp300hpux_reloc *bytes;
      arelent *cache_ptr;
      asymbol **symbols;
-     bfd_size_type symcount;
+     bfd_size_type symcount ATTRIBUTE_UNUSED;
 {
   int r_index;
   int r_extern = 0;
@@ -750,17 +746,13 @@ doit:
   reloc_cache = (arelent *) bfd_zalloc (abfd, (size_t) (count * sizeof
                                                        (arelent)));
   if (!reloc_cache && count != 0)
-    {
-    nomem:
-      bfd_set_error (bfd_error_no_memory);
-      return false;
-    }
+    return false;
 
   relocs = (PTR) bfd_alloc (abfd, reloc_size);
   if (!relocs && reloc_size != 0)
     {
       bfd_release (abfd, reloc_cache);
-      goto nomem;
+      return false;
     }
 
   if (bfd_read (relocs, 1, reloc_size, abfd) != reloc_size)