* elfcode.h (swap_out_syms): Set the type of an undefined symbol
authorIan Lance Taylor <ian@airs.com>
Mon, 12 Sep 1994 22:16:27 +0000 (22:16 +0000)
committerIan Lance Taylor <ian@airs.com>
Mon, 12 Sep 1994 22:16:27 +0000 (22:16 +0000)
to STT_FUNC if the BSF_FUNCTION flag is set.

bfd/ChangeLog
bfd/elfcode.h

index 5a431aae8ac11d2ffd94c74569bb4ab74f4b02cf..a070a044348aa984d55976590b6784d304adccbb 100644 (file)
@@ -1,5 +1,12 @@
 Mon Sep 12 11:43:08 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)
 
+       * coff-alpha.c (ecoffalpha_little_vec): Add SEC_CODE and SEC_DATA
+       to section_flags.
+       * coff-mips.c (ecoff_little_vec, ecoff_big_vec): Likewise.
+
+       * elfcode.h (swap_out_syms): Set the type of an undefined symbol
+       to STT_FUNC if the BSF_FUNCTION flag is set.
+
        * cofflink.c (coff_link_input_bfd): If r_symndx is -1, don't
        change it.
        (_bfd_coff_generic_relocate_section): If r_symndx is -1, it is an
index 78ae323ecbbd6068d8e525c5e2db526c56218d34..2ba485695d43d656fa08ddc01e96345231517b0b 100644 (file)
@@ -2347,7 +2347,10 @@ swap_out_syms (abfd)
        if (bfd_is_com_section (syms[idx]->section))
          sym.st_info = ELF_ST_INFO (STB_GLOBAL, STT_OBJECT);
        else if (bfd_is_und_section (syms[idx]->section))
-         sym.st_info = ELF_ST_INFO (STB_GLOBAL, STT_NOTYPE);
+         sym.st_info = ELF_ST_INFO (STB_GLOBAL,
+                                    ((syms[idx]->flags & BSF_FUNCTION)
+                                     ? STT_FUNC
+                                     : STT_NOTYPE));
        else if (syms[idx]->flags & BSF_SECTION_SYM)
          sym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION);
        else if (syms[idx]->flags & BSF_FILE)
@@ -2511,7 +2514,8 @@ NAME(bfd_elf,write_object_contents) (abfd)
     }
 
   if (bed->elf_backend_final_write_processing)
-    (*bed->elf_backend_final_write_processing) (abfd, NULL);
+    (*bed->elf_backend_final_write_processing) (abfd,
+                                               elf_tdata (abfd)->linker);
 
   return write_shdrs_and_ehdr (abfd);
 }
@@ -5682,10 +5686,6 @@ elf_bfd_final_link (abfd, info)
        }
     }
 
-  /* Now backend stuff.  */
-  if (bed->elf_backend_final_write_processing)
-    (*bed->elf_backend_final_write_processing) (abfd, NULL);
-
   if (finfo.contents != NULL)
     free (finfo.contents);
   if (finfo.external_relocs != NULL)
@@ -5709,6 +5709,8 @@ elf_bfd_final_link (abfd, info)
        free (elf_section_data (o)->rel_hashes);
     }
 
+  elf_tdata (abfd)->linker = true;
+
   return true;
 
  error_return: