2001-11-06 Fred Fish <fnf@redhat.com>
[deliverable/binutils-gdb.git] / bfd / elf32-sparc.c
index 17078303bb81d0cf6b00c49f76a58faad125248d..889d83fccc0c568ac3da3c902ca59725a98b66ed 100644 (file)
@@ -53,7 +53,7 @@ static boolean elf32_sparc_object_p
 static void elf32_sparc_final_write_processing
   PARAMS ((bfd *, boolean));
 static enum elf_reloc_type_class elf32_sparc_reloc_type_class
-  PARAMS ((int));
+  PARAMS ((const Elf_Internal_Rela *));
 static asection * elf32_sparc_gc_mark_hook
   PARAMS ((bfd *, struct bfd_link_info *, Elf_Internal_Rela *,
           struct elf_link_hash_entry *, Elf_Internal_Sym *));
@@ -1237,7 +1237,8 @@ elf32_sparc_relocate_section (output_bfd, info, input_bfd, input_section,
            }
          else if (h->root.type == bfd_link_hash_undefweak)
            relocation = 0;
-         else if (info->shared && !info->symbolic
+         else if (info->shared
+                  && (!info->symbolic || info->allow_shlib_undefined)
                   && !info->no_undefined
                   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
            relocation = 0;
@@ -1534,7 +1535,7 @@ elf32_sparc_relocate_section (output_bfd, info, input_bfd, input_section,
                              BFD_FAIL ();
                              (*_bfd_error_handler)
                                (_("%s: probably compiled without -fPIC?"),
-                                bfd_get_filename (input_bfd));
+                                bfd_archive_filename (input_bfd));
                              bfd_set_error (bfd_error_bad_value);
                              return false;
                            }
@@ -1987,7 +1988,7 @@ elf32_sparc_merge_private_bfd_data (ibfd, obfd)
       error = true;
       (*_bfd_error_handler)
        (_("%s: compiled for a 64 bit system and target is 32 bit"),
-        bfd_get_filename (ibfd));
+        bfd_archive_filename (ibfd));
     }
   else if ((ibfd->flags & DYNAMIC) == 0)
     {
@@ -2001,7 +2002,7 @@ elf32_sparc_merge_private_bfd_data (ibfd, obfd)
     {
       (*_bfd_error_handler)
        (_("%s: linking little endian files with big endian files"),
-        bfd_get_filename (ibfd));
+        bfd_archive_filename (ibfd));
       error = true;
     }
   previous_ibfd_e_flags = elf_elfheader (ibfd)->e_flags & EF_SPARC_LEDATA;
@@ -2081,10 +2082,10 @@ elf32_sparc_final_write_processing (abfd, linker)
 }
 
 static enum elf_reloc_type_class
-elf32_sparc_reloc_type_class (type)
-     int type;
+elf32_sparc_reloc_type_class (rela)
+     const Elf_Internal_Rela *rela;
 {
-  switch (type)
+  switch ((int) ELF32_R_TYPE (rela->r_info))
     {
     case R_SPARC_RELATIVE:
       return reloc_class_relative;
This page took 0.023848 seconds and 4 git commands to generate.