Remove sanitized-out Magic Cap support, will never be released
[deliverable/binutils-gdb.git] / bfd / coffcode.h
index ae07e91d9c0a5d22ede8f6abc86c5a4752840904..be39c22c93fb14e15e7e819cd4680835735af73f 100644 (file)
@@ -1,5 +1,5 @@
 /* Support for the generic parts of most COFF variants, for BFD.
-   Copyright 1990, 91, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
+   Copyright 1990, 91, 92, 93, 94, 95, 96, 1997 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
 This file is part of BFD, the Binary File Descriptor library.
@@ -310,6 +310,30 @@ CODE_FRAGMENT
 #endif
 
 #define STRING_SIZE_SIZE (4)
+
+static long sec_to_styp_flags PARAMS ((const char *, flagword));
+static flagword styp_to_sec_flags PARAMS ((bfd *, PTR, const char *));
+static boolean coff_bad_format_hook PARAMS ((bfd *, PTR));
+static boolean coff_new_section_hook PARAMS ((bfd *, asection *));
+static boolean coff_set_arch_mach_hook PARAMS ((bfd *, PTR));
+static boolean coff_write_relocs PARAMS ((bfd *, int));
+static boolean coff_set_flags
+  PARAMS ((bfd *, unsigned int *, unsigned short *));
+static boolean coff_set_arch_mach
+  PARAMS ((bfd *, enum bfd_architecture, unsigned long));
+static boolean coff_compute_section_file_positions PARAMS ((bfd *));
+static boolean coff_write_object_contents PARAMS ((bfd *));
+static boolean coff_set_section_contents
+  PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type));
+static PTR buy_and_read PARAMS ((bfd *, file_ptr, int, size_t));
+static boolean coff_slurp_line_table PARAMS ((bfd *, asection *));
+static boolean coff_slurp_symbol_table PARAMS ((bfd *));
+static boolean coff_slurp_reloc_table PARAMS ((bfd *, asection *, asymbol **));
+static long coff_canonicalize_reloc
+  PARAMS ((bfd *, asection *, arelent **, asymbol **));
+#ifndef coff_mkobject_hook
+static PTR coff_mkobject_hook PARAMS ((bfd *, PTR,  PTR));
+#endif
 \f
 /* void warning(); */
 
@@ -727,6 +751,7 @@ dependent COFF routines:
 . unsigned int _bfd_linesz;
 . boolean _bfd_coff_long_filenames;
 . boolean _bfd_coff_long_section_names;
+. unsigned int _bfd_coff_default_section_alignment_power;
 . void (*_bfd_coff_swap_filehdr_in) PARAMS ((
 .       bfd     *abfd,
 .       PTR     ext,
@@ -796,7 +821,7 @@ dependent COFF routines:
 . boolean (*_bfd_coff_sym_is_global) PARAMS ((
 .       bfd *abfd,
 .       struct internal_syment *));
-. void (*_bfd_coff_compute_section_file_positions) PARAMS ((
+. boolean (*_bfd_coff_compute_section_file_positions) PARAMS ((
 .       bfd *abfd));
 . boolean (*_bfd_coff_start_final_link) PARAMS ((
 .       bfd *output_bfd,
@@ -880,6 +905,8 @@ dependent COFF routines:
 .#define bfd_coff_long_filenames(abfd) (coff_backend_info (abfd)->_bfd_coff_long_filenames)
 .#define bfd_coff_long_section_names(abfd) \
 .        (coff_backend_info (abfd)->_bfd_coff_long_section_names)
+.#define bfd_coff_default_section_alignment_power(abfd) \
+.       (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
 .#define bfd_coff_swap_filehdr_in(abfd, i,o) \
 .        ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
 .
@@ -1029,10 +1056,12 @@ coff_new_section_hook (abfd, section)
   return true;
 }
 
-#ifdef I960
+#ifdef COFF_ALIGN_IN_SECTION_HEADER
 
 /* Set the alignment of a BFD section.  */
 
+static void coff_set_alignment_hook PARAMS ((bfd *, asection *, PTR));
+
 static void
 coff_set_alignment_hook (abfd, section, scnhdr)
      bfd * abfd;
@@ -1042,13 +1071,22 @@ coff_set_alignment_hook (abfd, section, scnhdr)
   struct internal_scnhdr *hdr = (struct internal_scnhdr *) scnhdr;
   unsigned int i;
 
+#ifdef I960
+  /* Extract ALIGN from 2**ALIGN stored in section header */
   for (i = 0; i < 32; i++)
     if ((1 << i) >= hdr->s_align)
       break;
+#endif
+/* start-sanitize-tic80 */
+#ifdef TIC80COFF
+  /* TI tools hijack bits 8-11 for the alignment */
+  i = (hdr->s_flags >> 8) & 0xF ;
+#endif
+/* end-sanitize-tic80 */
   section->alignment_power = i;
 }
 
-#else /* ! I960 */
+#else /* ! COFF_ALIGN_IN_SECTION_HEADER */
 #ifdef COFF_WITH_PE
 
 /* a couple of macros to help setting the alignment power field */
@@ -1064,6 +1102,8 @@ coff_set_alignment_hook (abfd, section, scnhdr)
      section->alignment_power = y;\
   }
 
+static void coff_set_alignment_hook PARAMS ((bfd *, asection *, PTR));
+
 static void
 coff_set_alignment_hook (abfd, section, scnhdr)
      bfd * abfd;
@@ -1151,6 +1191,8 @@ coff_set_alignment_hook (abfd, section, scnhdr)
    When we see one, we correct the reloc and line number counts in the
    real header, and remove the section we just created.  */
 
+static void coff_set_alignment_hook PARAMS ((bfd *, asection *, PTR));
+
 static void
 coff_set_alignment_hook (abfd, section, scnhdr)
      bfd *abfd;
@@ -1189,9 +1231,12 @@ coff_set_alignment_hook (abfd, section, scnhdr)
 
 #endif /* ! RS6000COFF_C */
 #endif /* ! COFF_WITH_PE */
-#endif /* ! I960 */
+#endif /* ! COFF_ALIGN_IN_SECTION_HEADER */
 
 #ifndef coff_mkobject
+
+static boolean coff_mkobject PARAMS ((bfd *));
+
 static boolean
 coff_mkobject (abfd)
      bfd * abfd;
@@ -1270,6 +1315,12 @@ coff_mkobject_hook (abfd, filehdr, aouthdr)
     }
 #endif
 
+#ifdef  ARM
+  /* Set the flags field from the COFF header read in */
+  if (! coff_arm_bfd_set_private_flags (abfd, internal_f->f_flags))
+    coff->flags = 0;
+#endif
+  
   return (PTR) coff;
 }
 #endif
@@ -1318,7 +1369,16 @@ coff_set_arch_mach_hook (abfd, filehdr)
 #ifdef ARMMAGIC
     case ARMMAGIC:
       arch = bfd_arch_arm;
-      machine =0;
+      switch (internal_f->f_flags & F_ARM_ARCHITECTURE_MASK)
+       {
+       case F_ARM_2:  machine = bfd_mach_arm_2;  break;
+       case F_ARM_2a: machine = bfd_mach_arm_2a; break;
+       case F_ARM_3:  machine = bfd_mach_arm_3;  break;
+       default:
+       case F_ARM_3M: machine = bfd_mach_arm_3M; break;
+       case F_ARM_4:  machine = bfd_mach_arm_4;  break;
+       case F_ARM_4T: machine = bfd_mach_arm_4T; break;
+       }
       break;
 #endif
 #ifdef MC68MAGIC
@@ -1533,11 +1593,13 @@ coff_set_arch_mach_hook (abfd, filehdr)
       break;
 #endif
 
+/* start-sanitize-tic80 */
 #ifdef TIC80_ARCH_MAGIC
     case TIC80_ARCH_MAGIC:
       arch = bfd_arch_tic80;
       break;
 #endif
+/* end-sanitize-tic80 */
 
     default:                   /* Unreadable input file type */
       arch = bfd_arch_obscure;
@@ -1550,6 +1612,9 @@ coff_set_arch_mach_hook (abfd, filehdr)
 
 #ifdef SYMNAME_IN_DEBUG
 
+static boolean symname_in_debug_hook
+  PARAMS ((bfd *, struct internal_syment *));
+
 static boolean
 symname_in_debug_hook (abfd, sym)
      bfd * abfd;
@@ -1840,7 +1905,7 @@ coff_write_relocs (abfd, first_undef)
 static boolean
 coff_set_flags (abfd, magicp, flagsp)
      bfd * abfd;
-     unsigned *magicp;
+     unsigned int *magicp;
      unsigned short *flagsp;
 {
   switch (bfd_get_arch (abfd))
@@ -1906,9 +1971,28 @@ coff_set_flags (abfd, magicp, flagsp)
       }
       break;
 #endif
+/* start-sanitize-tic80 */
+#ifdef TIC80_ARCH_MAGIC
+    case bfd_arch_tic80:
+      *magicp = TIC80_ARCH_MAGIC;
+      return true;
+#endif
+/* end-sanitize-tic80 */
 #ifdef ARMMAGIC
     case bfd_arch_arm:
-      *magicp = ARMMAGIC;
+      * magicp = ARMMAGIC;
+      * flagsp = 0;
+      if (APCS_SET (abfd) && APCS_FLAG (abfd))
+       * flagsp = F_APCS26;
+      switch (bfd_get_mach (abfd))
+       {
+       case bfd_mach_arm_2:  * flagsp |= F_ARM_2;  break;
+       case bfd_mach_arm_2a: * flagsp |= F_ARM_2a; break;
+       case bfd_mach_arm_3:  * flagsp |= F_ARM_3;  break;
+       case bfd_mach_arm_3M: * flagsp |= F_ARM_3M; break;
+       case bfd_mach_arm_4:  * flagsp |= F_ARM_4;  break;
+       case bfd_mach_arm_4T: * flagsp |= F_ARM_4T; break;
+       }
       return true;
 #endif
 #ifdef PPCMAGIC
@@ -2062,13 +2146,14 @@ coff_set_arch_mach (abfd, arch, machine)
 
 /* Calculate the file position for each section. */
 
-static void
+static boolean
 coff_compute_section_file_positions (abfd)
      bfd * abfd;
 {
   asection *current;
   asection *previous = (asection *) NULL;
   file_ptr sofar = FILHSZ;
+  boolean align_adjust;
 
 #ifndef I960
   file_ptr old_sofar;
@@ -2154,6 +2239,7 @@ coff_compute_section_file_positions (abfd)
       sofar += SCNHSZ;
 #endif
 
+  align_adjust = false;
   for (current = abfd->sections, count = 1;
        current != (asection *) NULL;
        current = current->next, ++count)
@@ -2202,20 +2288,14 @@ coff_compute_section_file_positions (abfd)
          current->used_by_bfd =
            (PTR) bfd_zalloc (abfd, sizeof (struct coff_section_tdata));
          if (current->used_by_bfd == NULL)
-           {
-             /* FIXME: Return error.  */
-             abort ();
-           }
+           return false;
        }
       if (pei_section_data (abfd, current) == NULL)
        {
          coff_section_data (abfd, current)->tdata =
            (PTR) bfd_zalloc (abfd, sizeof (struct pei_section_tdata));
          if (coff_section_data (abfd, current)->tdata == NULL)
-           {
-             /* FIXME: Return error.  */
-             abort ();
-           }
+           return false;
        }
       if (pei_section_data (abfd, current)->virt_size == 0)
        pei_section_data (abfd, current)->virt_size = current->_raw_size;
@@ -2234,16 +2314,26 @@ coff_compute_section_file_positions (abfd)
          old_size = current->_raw_size;
          current->_raw_size = BFD_ALIGN (current->_raw_size,
                                          1 << current->alignment_power);
+         align_adjust = current->_raw_size != old_size;
          sofar += current->_raw_size - old_size;
        }
       else
        {
          old_sofar = sofar;
          sofar = BFD_ALIGN (sofar, 1 << current->alignment_power);
+         align_adjust = sofar != old_sofar;
          current->_raw_size += sofar - old_sofar;
        }
 #endif
 
+#ifdef COFF_IMAGE_WITH_PE
+      /* For PE we need to make sure we pad out to the aligned
+         _raw_size, in case the caller only writes out data to the
+         unaligned _raw_size.  */
+      if (pei_section_data (abfd, current)->virt_size < current->_raw_size)
+       align_adjust = true;
+#endif
+
 #ifdef _LIB
       /* Force .lib sections to start at zero.  The vma is then
         incremented in coff_set_section_contents.  This is right for
@@ -2255,9 +2345,30 @@ coff_compute_section_file_positions (abfd)
       previous = current;
     }
 
+  /* It is now safe to write to the output file.  If we needed an
+     alignment adjustment for the last section, then make sure that
+     there is a byte at offset sofar.  If there are no symbols and no
+     relocs, then nothing follows the last section.  If we don't force
+     the last byte out, then the file may appear to be truncated.  */
+  if (align_adjust)
+    {
+      bfd_byte b;
+
+      b = 0;
+      if (bfd_seek (abfd, sofar - 1, SEEK_SET) != 0
+         || bfd_write (&b, 1, 1, abfd) != 1)
+       return false;
+    }
+
+  /* Make sure the relocations are aligned.  We don't need to make
+     sure that this byte exists, because it will only matter if there
+     really are relocs.  */
+  sofar = BFD_ALIGN (sofar, 1 << COFF_DEFAULT_SECTION_ALIGNMENT_POWER);
+
   obj_relocbase (abfd) = sofar;
   abfd->output_has_begun = true;
 
+  return true;
 }
 
 #if 0
@@ -2314,7 +2425,7 @@ coff_add_missing_symbols (abfd)
   if (!need_text && !need_data && !need_bss && !need_file)
     return true;
   nsyms += need_text + need_data + need_bss + need_file;
-  sympp2 = (asymbol **) bfd_alloc_by_size_t (abfd, nsyms * sizeof (asymbol *));
+  sympp2 = (asymbol **) bfd_alloc (abfd, nsyms * sizeof (asymbol *));
   if (!sympp2)
     return false;
   memcpy (sympp2, sympp, i * sizeof (asymbol *));
@@ -2369,7 +2480,10 @@ coff_write_object_contents (abfd)
   lnno_size = coff_count_linenumbers (abfd) * LINESZ;
 
   if (abfd->output_has_begun == false)
-    coff_compute_section_file_positions (abfd);
+    {
+      if (! coff_compute_section_file_positions (abfd))
+       return false;
+    }
 
   reloc_base = obj_relocbase (abfd);
 
@@ -2538,7 +2652,12 @@ coff_write_object_contents (abfd)
       section.s_align = (current->alignment_power
                         ? 1 << current->alignment_power
                         : 0);
-
+/* start-sanitize-tic80 */
+#else
+#ifdef TIC80COFF
+      section.s_flags |= (current->alignment_power & 0xF) << 8;
+#endif
+/* end-sanitize-tic80 */
 #endif
 
 #ifdef COFF_IMAGE_WITH_PE
@@ -2690,6 +2809,12 @@ coff_write_object_contents (abfd)
   else
     internal_f.f_flags |= F_AR32W;
 
+/* start-sanitize-tic80 */
+#ifdef TIC80_TARGET_ID
+  internal_f.f_target_id = TIC80_TARGET_ID;
+#endif
+/* end-sanitize-tic80 */
+
   /*
      FIXME, should do something about the other byte orders and
      architectures.
@@ -2727,10 +2852,12 @@ coff_write_object_contents (abfd)
       internal_a.magic = NMAGIC; /* Assume separate i/d */
 #define __A_MAGIC_SET__
 #endif /* A29K */
-#ifdef TIC80
-    internal_a.magic = TIC80MAGIC;
+/* start-sanitize-tic80 */
+#ifdef TIC80COFF
+    internal_a.magic = TIC80_ARCH_MAGIC;
 #define __A_MAGIC_SET__
 #endif /* TIC80 */
+/* end-sanitize-tic80 */
 #ifdef I860
     /* FIXME: What are the a.out magic numbers for the i860?  */
     internal_a.magic = 0;
@@ -2771,10 +2898,12 @@ coff_write_object_contents (abfd)
 #define __A_MAGIC_SET__
     internal_a.magic = ZMAGIC;
 #endif 
+
 #if defined(PPC_PE)
 #define __A_MAGIC_SET__
     internal_a.magic = IMAGE_NT_OPTIONAL_HDR_MAGIC;
 #endif
+
 #if defined(I386)
 #define __A_MAGIC_SET__
 #if defined(LYNXOS)
@@ -2791,7 +2920,7 @@ coff_write_object_contents (abfd)
 #endif /* LYNXOS */
 #endif /* SPARC */
 
-#if RS6000COFF_C
+#ifdef RS6000COFF_C
 #define __A_MAGIC_SET__
     internal_a.magic = (abfd->flags & D_PAGED) ? RS6K_AOUTHDR_ZMAGIC :
     (abfd->flags & WP_TEXT) ? RS6K_AOUTHDR_NMAGIC :
@@ -3005,7 +3134,10 @@ coff_set_section_contents (abfd, section, location, offset, count)
      bfd_size_type count;
 {
   if (abfd->output_has_begun == false) /* set by bfd.c handler */
-    coff_compute_section_file_positions (abfd);
+    {
+      if (! coff_compute_section_file_positions (abfd))
+       return false;
+    }
 
 #if defined(_LIB) && !defined(TARG_AUX)
 
@@ -3082,8 +3214,7 @@ coff_close_and_cleanup (abfd)
        return false;
       }
 
-  /* We depend on bfd_close to free all the memory on the obstack.  */
-  /* FIXME if bfd_release is not using obstacks! */
+  /* We depend on bfd_close to free all the memory on the objalloc.  */
   return true;
 }
 
@@ -3276,6 +3407,9 @@ coff_slurp_symbol_table (abfd)
 #ifdef RS6000COFF_C
            case C_HIDEXT:
 #endif
+#ifdef C_SYSTEM
+           case C_SYSTEM:      /* System Wide variable */
+#endif
 #ifdef COFF_WITH_PE
             /* PE uses storage class 0x68 to denote a section symbol */
             case C_SECTION:
@@ -3301,8 +3435,15 @@ coff_slurp_symbol_table (abfd)
                     section */
 
                  dst->symbol.flags = BSF_EXPORT | BSF_GLOBAL;
+
+#if defined (COFF_WITH_PE) || defined (COFF_IMAGE_WITH_PE)
+                 /* PE sets the symbol to a value relative to the
+                     start of the section.  */
+                 dst->symbol.value = src->u.syment.n_value;
+#else
                  dst->symbol.value = (src->u.syment.n_value
                                       - dst->symbol.section->vma);
+#endif
 
                  if (ISFCN ((src->u.syment.n_type)))
                    {
@@ -3341,8 +3482,16 @@ coff_slurp_symbol_table (abfd)
              /* Base the value as an index from the base of the
                 section, if there is one.  */
              if (dst->symbol.section)
-               dst->symbol.value = (src->u.syment.n_value
-                                    - dst->symbol.section->vma);
+               {
+#if defined (COFF_WITH_PE) || defined (COFF_IMAGE_WITH_PE)
+                 /* PE sets the symbol to a value relative to the
+                     start of the section.  */
+                 dst->symbol.value = src->u.syment.n_value;
+#else
+                 dst->symbol.value = (src->u.syment.n_value
+                                      - dst->symbol.section->vma);
+#endif
+               }
              else
                dst->symbol.value = src->u.syment.n_value;
              break;
@@ -3356,9 +3505,15 @@ coff_slurp_symbol_table (abfd)
 #endif
            case C_REGPARM:     /* register parameter            */
            case C_REG: /* register variable             */
+/* start-sanitize-tic80 */
+#ifndef TIC80COFF
+/* end-sanitize-tic80 */
 #ifdef C_AUTOARG
            case C_AUTOARG:     /* 960-specific storage class */
 #endif
+/* start-sanitize-tic80 */
+#endif
+/* end-sanitize-tic80 */
            case C_TPDEF:       /* type definition               */
            case C_ARG:
            case C_AUTO:        /* automatic variable */
@@ -3438,10 +3593,16 @@ coff_slurp_symbol_table (abfd)
            case C_FCN:         /* ".bf" or ".ef"                */
            case C_EFCN:        /* physical end of function      */
              dst->symbol.flags = BSF_LOCAL;
+#if defined (COFF_WITH_PE) || defined (COFF_IMAGE_WITH_PE)
+             /* PE sets the symbol to a value relative to the start
+                of the section.  */
+             dst->symbol.value = src->u.syment.n_value;
+#else
              /* Base the value as an index from the base of the
                 section.  */
              dst->symbol.value = (src->u.syment.n_value
                                   - dst->symbol.section->vma);
+#endif
              break;
 
            case C_NULL:
@@ -3455,6 +3616,14 @@ coff_slurp_symbol_table (abfd)
              /* NT uses 0x67 for a weak symbol, not C_ALIAS.  */
            case C_ALIAS:       /* duplicate tag                 */
 #endif
+/* start-sanitize-tic80 */
+             /* New storage classes for TIc80 */
+#ifdef TIC80COFF
+           case C_UEXT:        /* Tentative external definition */
+#endif
+           case C_STATLAB:     /* Static load time label */
+           case C_EXTLAB:      /* External load time label */
+/* end-sanitize-tic80 */
            case C_HIDDEN:      /* ext symbol in dmert public lib */
            default:
              (*_bfd_error_handler)
@@ -3513,6 +3682,8 @@ coff_slurp_symbol_table (abfd)
 
 #ifdef OTHER_GLOBAL_CLASS
 
+static boolean coff_sym_is_global PARAMS ((bfd *, struct internal_syment *));
+
 static boolean
 coff_sym_is_global (abfd, syment)
      bfd *abfd;
@@ -3617,26 +3788,20 @@ coff_slurp_reloc_table (abfd, asect, symbols)
 
   for (idx = 0; idx < asect->reloc_count; idx++)
     {
-#ifdef RELOC_PROCESSING
       struct internal_reloc dst;
       struct external_reloc *src;
-
-      cache_ptr = reloc_cache + idx;
-      src = native_relocs + idx;
-      coff_swap_reloc_in (abfd, src, &dst);
-
-      RELOC_PROCESSING (cache_ptr, &dst, symbols, abfd, asect);
-#else
-      struct internal_reloc dst;
+#ifndef RELOC_PROCESSING
       asymbol *ptr;
-      struct external_reloc *src;
+#endif
 
       cache_ptr = reloc_cache + idx;
       src = native_relocs + idx;
 
       coff_swap_reloc_in (abfd, src, &dst);
 
-
+#ifdef RELOC_PROCESSING
+      RELOC_PROCESSING (cache_ptr, &dst, symbols, abfd, asect);
+#else
       cache_ptr->address = dst.r_vaddr;
 
       if (dst.r_symndx != -1)
@@ -3647,7 +3812,7 @@ coff_slurp_reloc_table (abfd, asect, symbols)
                ("%s: warning: illegal symbol index %ld in relocs",
                 bfd_get_filename (abfd), dst.r_symndx);
              cache_ptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
-             ptr = 0;
+             ptr = NULL;
            }
          else
            {
@@ -3659,7 +3824,7 @@ coff_slurp_reloc_table (abfd, asect, symbols)
       else
        {
          cache_ptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
-         ptr = 0;
+         ptr = NULL;
        }
 
       /* The symbols definitions that we have read in have been
@@ -3677,7 +3842,7 @@ coff_slurp_reloc_table (abfd, asect, symbols)
 
       /* Fill in the cache_ptr->howto field from dst.r_type */
       RTYPE2HOWTO (cache_ptr, &dst);
-#endif
+#endif /* RELOC_PROCESSING */
 
       if (cache_ptr->howto == NULL)
        {
@@ -3783,6 +3948,10 @@ coff_sym_filepos (abfd)
 #ifndef coff_reloc16_estimate
 #define coff_reloc16_estimate dummy_reloc16_estimate
 
+static int dummy_reloc16_estimate
+  PARAMS ((bfd *, asection *, arelent *, unsigned int,
+          struct bfd_link_info *));
+
 static int
 dummy_reloc16_estimate (abfd, input_section, reloc, shrink, link_info)
      bfd *abfd;
@@ -3797,8 +3966,15 @@ dummy_reloc16_estimate (abfd, input_section, reloc, shrink, link_info)
 #endif
 
 #ifndef coff_reloc16_extra_cases
+
 #define coff_reloc16_extra_cases dummy_reloc16_extra_cases
+
 /* This works even if abort is not declared in any header file.  */
+
+static void dummy_reloc16_extra_cases
+  PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
+          bfd_byte *, unsigned int *, unsigned int *));
+
 static void
 dummy_reloc16_extra_cases (abfd, link_info, link_order, reloc, data, src_ptr,
                           dst_ptr)
@@ -3836,6 +4012,7 @@ dummy_reloc16_extra_cases (abfd, link_info, link_order, reloc, data, src_ptr,
 #endif
 #define coff_bfd_final_link _bfd_generic_final_link
 #endif /* ! defined (coff_relocate_section) */
+
 #define coff_bfd_link_split_section  _bfd_generic_link_split_section
 
 #ifndef coff_start_final_link
@@ -3868,6 +4045,7 @@ static CONST bfd_coff_backend_data bfd_coff_std_swap_table =
 #else
   false,
 #endif
+  COFF_DEFAULT_SECTION_ALIGNMENT_POWER,
   coff_swap_filehdr_in, coff_swap_aouthdr_in, coff_swap_scnhdr_in,
   coff_swap_reloc_in, coff_bad_format_hook, coff_set_arch_mach_hook,
   coff_mkobject_hook, styp_to_sec_flags, coff_set_alignment_hook,
@@ -3878,12 +4056,20 @@ static CONST bfd_coff_backend_data bfd_coff_std_swap_table =
   coff_adjust_symndx, coff_link_add_one_symbol
 };
 
-#define        coff_close_and_cleanup _bfd_generic_close_and_cleanup
-#define coff_bfd_free_cached_info _bfd_generic_bfd_free_cached_info
-#define        coff_get_section_contents _bfd_generic_get_section_contents
+#ifndef coff_close_and_cleanup
+#define        coff_close_and_cleanup              _bfd_generic_close_and_cleanup
+#endif
+
+#ifndef coff_bfd_free_cached_info
+#define coff_bfd_free_cached_info           _bfd_generic_bfd_free_cached_info
+#endif
+
+#ifndef coff_get_section_contents
+#define        coff_get_section_contents           _bfd_generic_get_section_contents
+#endif
 
 #ifndef coff_bfd_copy_private_symbol_data
-#define coff_bfd_copy_private_symbol_data  _bfd_generic_bfd_copy_private_symbol_data
+#define coff_bfd_copy_private_symbol_data   _bfd_generic_bfd_copy_private_symbol_data
 #endif
 
 #ifndef coff_bfd_copy_private_section_data
@@ -3891,36 +4077,44 @@ static CONST bfd_coff_backend_data bfd_coff_std_swap_table =
 #endif
 
 #ifndef coff_bfd_copy_private_bfd_data 
-#define coff_bfd_copy_private_bfd_data _bfd_generic_bfd_copy_private_bfd_data
+#define coff_bfd_copy_private_bfd_data      _bfd_generic_bfd_copy_private_bfd_data
+#endif
+
+#ifndef coff_bfd_merge_private_bfd_data
+#define coff_bfd_merge_private_bfd_data     _bfd_generic_bfd_merge_private_bfd_data
 #endif
 
-#define coff_bfd_merge_private_bfd_data _bfd_generic_bfd_merge_private_bfd_data
-#define coff_bfd_set_private_flags _bfd_generic_bfd_set_private_flags
+#ifndef coff_bfd_set_private_flags
+#define coff_bfd_set_private_flags          _bfd_generic_bfd_set_private_flags
+#endif
 
 #ifndef coff_bfd_print_private_bfd_data 
-#define coff_bfd_print_private_bfd_data  _bfd_generic_bfd_print_private_bfd_data
+#define coff_bfd_print_private_bfd_data     _bfd_generic_bfd_print_private_bfd_data
 #endif
 
-#ifndef coff_bfd_is_local_label
-#define coff_bfd_is_local_label bfd_generic_is_local_label
+#ifndef coff_bfd_is_local_label_name
+#define coff_bfd_is_local_label_name       _bfd_coff_is_local_label_name
 #endif
+
 #ifndef coff_read_minisymbols
-#define coff_read_minisymbols _bfd_generic_read_minisymbols
+#define coff_read_minisymbols              _bfd_generic_read_minisymbols
 #endif
+
 #ifndef coff_minisymbol_to_symbol
-#define coff_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol
+#define coff_minisymbol_to_symbol          _bfd_generic_minisymbol_to_symbol
 #endif
 
 /* The reloc lookup routine must be supplied by each individual COFF
    backend.  */
 #ifndef coff_bfd_reloc_type_lookup
-#define coff_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_lookup
+#define coff_bfd_reloc_type_lookup         _bfd_norelocs_bfd_reloc_type_lookup
 #endif
 
 #ifndef coff_bfd_get_relocated_section_contents
 #define coff_bfd_get_relocated_section_contents \
   bfd_generic_get_relocated_section_contents
 #endif
+
 #ifndef coff_bfd_relax_section
-#define coff_bfd_relax_section bfd_generic_relax_section
+#define coff_bfd_relax_section             bfd_generic_relax_section
 #endif
This page took 0.033786 seconds and 4 git commands to generate.