bfd/
[deliverable/binutils-gdb.git] / bfd / coffcode.h
index 4f53e470e42c894ce0266f55f9e359abac2bd212..1cc860a2fd281360d4b394f64e3a4110d264e42b 100644 (file)
@@ -371,6 +371,7 @@ CODE_FRAGMENT
 
 #define DOT_DEBUG      ".debug"
 #define GNU_LINKONCE_WI ".gnu.linkonce.wi."
+#define DOT_RELOC      ".reloc"
 
 #if defined (COFF_LONG_SECTION_NAMES)
 /* Needed to expand the inputs to BLANKOR1TOODD.  */
@@ -944,7 +945,8 @@ handle_COMDAT (bfd * abfd,
                   but there's some checking we can do to be
                   sure.  */
 
-               if (! (isym.n_sclass == C_STAT
+               if (! ((isym.n_sclass == C_STAT
+                       || isym.n_sclass == C_EXT)
                       && isym.n_type == T_NULL
                       && isym.n_value == 0))
                  abort ();
@@ -954,7 +956,7 @@ handle_COMDAT (bfd * abfd,
                   names like .text$foo__Fv (in the case of a
                   function).  See comment above for more.  */
 
-               if (strcmp (name, symname) != 0)
+               if (isym.n_sclass == C_STAT && strcmp (name, symname) != 0)
                  _bfd_error_handler (_("%B: warning: COMDAT symbol '%s' does not match section name '%s'"),
                                      abfd, symname, name);
 
@@ -1559,6 +1561,10 @@ Special entry points for gdb to swap in coff symbol table parts:
 .#define bfd_coff_print_pdata(a,p) \
 .  ((coff_backend_info (a)->_bfd_coff_print_pdata) (a, p))
 .
+.{* Macro: Returns true if the bfd is a PE executable as opposed to a
+.   PE object file.  *}
+.#define bfd_pei_p(abfd) \
+.  (CONST_STRNEQ ((abfd)->xvec->name, "pei-"))
 */
 
 /* See whether the magic number matches.  */
@@ -1986,6 +1992,11 @@ coff_mkobject_hook (bfd * abfd,
     abfd->flags |= HAS_DEBUG;
 #endif
 
+  if ((internal_f->f_flags & F_GO32STUB) != 0)
+    coff->go32stub = (char *) bfd_alloc (abfd, (bfd_size_type) GO32_STUBSIZE);
+  if (coff->go32stub != NULL)
+    memcpy (coff->go32stub, internal_f->go32stub, GO32_STUBSIZE);
+
   return coff;
 }
 #endif
@@ -3181,6 +3192,13 @@ coff_compute_section_file_positions (bfd * abfd)
     int target_index;
     bfd_size_type amt;
 
+#ifdef COFF_PAGE_SIZE
+    /* Clear D_PAGED if section alignment is smaller than
+       COFF_PAGE_SIZE.  */
+   if (pe_data (abfd)->pe_opthdr.SectionAlignment < COFF_PAGE_SIZE)
+     abfd->flags &= ~D_PAGED;
+#endif
+
     count = 0;
     for (current = abfd->sections; current != NULL; current = current->next)
       ++count;
@@ -3613,7 +3631,7 @@ coff_write_object_contents (bfd * abfd)
       bfd_boolean is_reloc_section = FALSE;
 
 #ifdef COFF_IMAGE_WITH_PE
-      if (strcmp (current->name, ".reloc") == 0)
+      if (strcmp (current->name, DOT_RELOC) == 0)
        {
          is_reloc_section = TRUE;
          hasrelocs = TRUE;
@@ -5599,6 +5617,10 @@ static bfd_coff_backend_data ticoff1_swap_table =
   _bfd_generic_section_already_linked
 #endif
 
+#ifndef coff_bfd_define_common_symbol
+#define coff_bfd_define_common_symbol      bfd_generic_define_common_symbol
+#endif
+
 #define CREATE_BIG_COFF_TARGET_VEC(VAR, NAME, EXTRA_O_FLAGS, EXTRA_S_FLAGS, UNDER, ALTERNATIVE, SWAP_TABLE)    \
 const bfd_target VAR =                                                 \
 {                                                                      \
This page took 0.026357 seconds and 4 git commands to generate.