2000-09-12 Jason Eckhardt <jle@cygnus.com>
[deliverable/binutils-gdb.git] / bfd / aoutx.h
index 895a3215d7dba0f6f20569593ac21ea030a8b8f1..24903034540f18a97282f20b626fd4b08cec71d5 100644 (file)
@@ -1,5 +1,5 @@
 /* BFD semi-generic back-end for a.out binaries.
-   Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 1999
+   Copyright 1990, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
    Free Software Foundation, Inc.
    Written by Cygnus Support.
 
@@ -165,10 +165,18 @@ DESCRIPTION
 #define MY_swap_std_reloc_in NAME(aout,swap_std_reloc_in)
 #endif
 
+#ifndef MY_swap_ext_reloc_in
+#define MY_swap_ext_reloc_in NAME(aout,swap_ext_reloc_in)
+#endif
+
 #ifndef MY_swap_std_reloc_out
 #define MY_swap_std_reloc_out NAME(aout,swap_std_reloc_out)
 #endif
 
+#ifndef MY_swap_ext_reloc_out
+#define MY_swap_ext_reloc_out NAME(aout,swap_ext_reloc_out)
+#endif
+
 #ifndef MY_final_link_relocate
 #define MY_final_link_relocate _bfd_final_link_relocate
 #endif
@@ -283,6 +291,8 @@ NAME(aout,reloc_type_lookup) (abfd,code)
   if (ext)
     switch (code)
       {
+       EXT (BFD_RELOC_8, 0);
+       EXT (BFD_RELOC_16, 1);
        EXT (BFD_RELOC_32, 2);
        EXT (BFD_RELOC_HI22, 8);
        EXT (BFD_RELOC_LO10, 11);
@@ -790,6 +800,10 @@ NAME(aout,machine_type) (arch, machine, unknown)
     *unknown = false;
     break;
 
+  case bfd_arch_cris:
+    if (machine == 0 || machine == 255)        arch_flags = M_CRIS;
+    break;
+
   default:
     arch_flags = M_UNKNOWN;
   }
@@ -1671,6 +1685,8 @@ translate_to_native_sym_flags (abfd, cache_ptr, sym_pointer)
     sym_pointer->e_type[0] = ((aout_symbol_type *) cache_ptr)->type;
   else if ((cache_ptr->flags & BSF_GLOBAL) != 0)
     sym_pointer->e_type[0] |= N_EXT;
+  else if ((cache_ptr->flags & BSF_LOCAL) != 0)
+    sym_pointer->e_type[0] &= ~N_EXT;
 
   if ((cache_ptr->flags & BSF_CONSTRUCTOR) != 0)
     {
@@ -2381,8 +2397,8 @@ NAME(aout,slurp_reloc_table) (abfd, asect, symbols)
        (struct reloc_ext_external *) relocs;
 
       for (; counter < count; counter++, rptr++, cache_ptr++)
-       NAME(aout,swap_ext_reloc_in) (abfd, rptr, cache_ptr, symbols,
-                                     bfd_get_symcount (abfd));
+       MY_swap_ext_reloc_in (abfd, rptr, cache_ptr, symbols,
+                             bfd_get_symcount (abfd));
     }
   else
     {
@@ -2432,7 +2448,8 @@ NAME(aout,squirt_out_relocs) (abfd, section)
       for (natptr = native;
           count != 0;
           --count, natptr += each_size, ++generic)
-       NAME(aout,swap_ext_reloc_out) (abfd, *generic, (struct reloc_ext_external *)natptr);
+       MY_swap_ext_reloc_out (abfd, *generic,
+                              (struct reloc_ext_external *) natptr);
     }
   else
     {
@@ -2822,7 +2839,7 @@ NAME(aout,find_nearest_line)
     }
 
   if (main_file_name == NULL
-      || main_file_name[0] == '/'
+      || IS_ABSOLUTE_PATH (main_file_name)
       || directory_name == NULL)
     filelen = 0;
   else
@@ -2846,7 +2863,7 @@ NAME(aout,find_nearest_line)
 
   if (main_file_name != NULL)
     {
-      if (main_file_name[0] == '/' || directory_name == NULL)
+      if (IS_ABSOLUTE_PATH (main_file_name) || directory_name == NULL)
        *filename_ptr = main_file_name;
       else
        {
@@ -5029,7 +5046,8 @@ aout_link_input_section_std (finfo, input_bfd, input_section, relocs,
              else
                name = strings + GET_WORD (input_bfd, syms[r_index].e_strx);
              if (! ((*finfo->info->callbacks->undefined_symbol)
-                    (finfo->info, name, input_bfd, input_section, r_addr)))
+                    (finfo->info, name, input_bfd, input_section,
+                    r_addr, true)))
                return false;
            }
 
@@ -5431,7 +5449,8 @@ aout_link_input_section_ext (finfo, input_bfd, input_section, relocs,
              else
                name = strings + GET_WORD (input_bfd, syms[r_index].e_strx);
              if (! ((*finfo->info->callbacks->undefined_symbol)
-                    (finfo->info, name, input_bfd, input_section, r_addr)))
+                    (finfo->info, name, input_bfd, input_section,
+                    r_addr, true)))
                return false;
            }
 
@@ -5669,6 +5688,10 @@ aout_link_reloc_link_order (finfo, o, p)
     }
   else
     {
+#ifdef MY_put_ext_reloc
+      MY_put_ext_reloc (finfo->output_bfd, r_extern, r_index, p->offset,
+                       howto, &erel, pr->addend);
+#else
       PUT_WORD (finfo->output_bfd, p->offset, erel.r_address);
 
       if (bfd_header_big_endian (finfo->output_bfd))
@@ -5691,6 +5714,7 @@ aout_link_reloc_link_order (finfo, o, p)
        }
 
       PUT_WORD (finfo->output_bfd, pr->addend, erel.r_addend);
+#endif /* MY_put_ext_reloc */
 
       rel_ptr = (PTR) &erel;
     }
This page took 0.024853 seconds and 4 git commands to generate.