From Ian Roxborough <irox@redhat.com>
[deliverable/binutils-gdb.git] / bfd / aoutx.h
index f8612a87062e3188b6b24954958f0ee4d0daaefe..e343f991a59c475ade4f687613be54360891ffbd 100644 (file)
@@ -1,5 +1,6 @@
 /* BFD semi-generic back-end for a.out binaries.
-   Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000,
+   2001
    Free Software Foundation, Inc.
    Written by Cygnus Support.
 
@@ -138,6 +139,7 @@ static boolean translate_to_native_sym_flags
 static void adjust_o_magic PARAMS ((bfd *, struct internal_exec *));
 static void adjust_z_magic PARAMS ((bfd *, struct internal_exec *));
 static void adjust_n_magic PARAMS ((bfd *, struct internal_exec *));
+reloc_howto_type * NAME(aout,reloc_type_lookup) PARAMS ((bfd *, bfd_reloc_code_real_type));
 
 /*
 SUBSECTION
@@ -775,11 +777,11 @@ NAME(aout,machine_type) (arch, machine, unknown)
     case bfd_mach_mips4650:
     case bfd_mach_mips8000:
     case bfd_mach_mips10000:
+    case bfd_mach_mips12000:
     case bfd_mach_mips16:
-    case bfd_mach_mips32:
-    case bfd_mach_mips32_4k:
+    case bfd_mach_mipsisa32:
     case bfd_mach_mips5:
-    case bfd_mach_mips64:
+    case bfd_mach_mipsisa64:
     case bfd_mach_mips_sb1:
       /* FIXME: These should be MIPS3, MIPS4, MIPS16, MIPS32, etc.  */
       arch_flags = M_MIPS2;
@@ -1004,10 +1006,14 @@ adjust_z_magic (abfd, execp)
     }
   if (abdp && abdp->zmagic_mapped_contiguous)
     {
-      text_pad = (obj_datasec(abfd)->vma
-                 - obj_textsec(abfd)->vma
-                 - obj_textsec(abfd)->_raw_size);
-      obj_textsec(abfd)->_raw_size += text_pad;
+      asection * text = obj_textsec (abfd);
+      asection * data = obj_datasec (abfd);
+
+      text_pad = data->vma - (text->vma + text->_raw_size);
+      /* Only pad the text section if the data
+        section is going to be placed after it.  */
+      if (text_pad > 0)
+       text->_raw_size += text_pad;
     }
   obj_datasec(abfd)->filepos = (obj_textsec(abfd)->filepos
                                + obj_textsec(abfd)->_raw_size);
@@ -1977,7 +1983,6 @@ error_return:
   _bfd_stringtab_free (strtab);
   return false;
 }
-
 \f
 long
 NAME(aout,get_symtab) (abfd, location)
@@ -1995,7 +2000,6 @@ NAME(aout,get_symtab) (abfd, location)
     *location++ =0;
     return bfd_get_symcount (abfd);
 }
-
 \f
 /* Standard reloc stuff */
 /* Output standard relocation information to a file in target byte order.  */
@@ -2538,7 +2542,6 @@ NAME(aout,get_reloc_upper_bound) (abfd, asect)
   bfd_set_error (bfd_error_invalid_operation);
   return -1;
 }
-
 \f
 long
 NAME(aout,get_symtab_upper_bound) (abfd)
@@ -2550,7 +2553,7 @@ NAME(aout,get_symtab_upper_bound) (abfd)
   return (bfd_get_symcount (abfd)+1) * (sizeof (aout_symbol_type *));
 }
 
- alent *
+alent *
 NAME(aout,get_lineno) (ignore_abfd, ignore_symbol)
      bfd *ignore_abfd ATTRIBUTE_UNUSED;
      asymbol *ignore_symbol ATTRIBUTE_UNUSED;
@@ -2586,8 +2589,8 @@ NAME(aout,get_symbol_info) (ignore_abfd, symbol, ret)
 }
 
 void
-NAME(aout,print_symbol) (ignore_abfd, afile, symbol, how)
-     bfd *ignore_abfd ATTRIBUTE_UNUSED;
+NAME(aout,print_symbol) (abfd, afile, symbol, how)
+     bfd *abfd;
      PTR afile;
      asymbol *symbol;
      bfd_print_symbol_type how;
@@ -2608,7 +2611,7 @@ NAME(aout,print_symbol) (ignore_abfd, afile, symbol, how)
     {
    CONST char *section_name = symbol->section->name;
 
-      bfd_print_symbol_vandf((PTR)file,symbol);
+      bfd_print_symbol_vandf (abfd, (PTR)file, symbol);
 
       fprintf (file," %-5s %04x %02x %02x",
              section_name,
@@ -2909,7 +2912,8 @@ NAME(aout,bfd_free_cached_info) (abfd)
 {
   asection *o;
 
-  if (bfd_get_format (abfd) != bfd_object)
+  if (bfd_get_format (abfd) != bfd_object
+      || abfd->tdata.aout_data == NULL)
     return true;
 
 #define BFCI_FREE(x) if (x != NULL) { free (x); x = NULL; }
@@ -4342,6 +4346,7 @@ aout_link_write_symbols (finfo, input_bfd)
              switch (discard)
                {
                case discard_none:
+               case discard_sec_merge:
                  break;
                case discard_l:
                  if ((type & N_STAB) == 0
This page took 0.029023 seconds and 4 git commands to generate.