binutils ChangeLog:
[deliverable/binutils-gdb.git] / bfd / aout-tic30.c
index 5d25c209f091592030de20078dfccbda3f8dd9e0..af99c4bde99827ecef75b533bc13b621fa966c5b 100644 (file)
@@ -1,5 +1,6 @@
 /* BFD back-end for TMS320C30 a.out binaries.
-   Copyright 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+   Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004
+   Free Software Foundation, Inc.
    Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au)
 
    This file is part of BFD, the Binary File Descriptor library.
 
 #define TARGET_IS_BIG_ENDIAN_P
 #define N_HEADER_IN_TEXT(x) 1
-#define BYTES_IN_WORD 4
 #define TEXT_START_ADDR 1024
 #define TARGET_PAGE_SIZE 128
 #define SEGMENT_SIZE TARGET_PAGE_SIZE
 #define DEFAULT_ARCH bfd_arch_tic30
 #define ARCH_SIZE 32
 
-#define MY(OP) CAT(tic30_aout_,OP)
+/* Do not "beautify" the CONCAT* macro args.  Traditional C will not
+   remove whitespace added here, and thus will fail to concatenate
+   the tokens.  */
+#define MY(OP) CONCAT2 (tic30_aout_,OP)
 #define TARGETNAME "a.out-tic30"
-#define NAME(x,y) CAT3(tic30_aout,_32_,y)
+#define NAME(x,y) CONCAT3 (tic30_aout,_32_,y)
 
 #include "bfd.h"
 #include "sysdep.h"
@@ -53,17 +56,27 @@ static bfd_reloc_status_type tic30_aout_relocate_contents
 static bfd_reloc_status_type tic30_aout_final_link_relocate
   PARAMS ((reloc_howto_type *, bfd *, asection *, bfd_byte *, bfd_vma,
           bfd_vma, bfd_vma));
-static const bfd_target *tic30_aout_object_p PARAMS ((bfd *));
-static boolean tic30_aout_write_object_contents PARAMS ((bfd *));
-static boolean tic30_aout_set_sizes PARAMS ((bfd *));
-static const bfd_target * tic30_aout_callback PARAMS ((bfd *));
-static boolean MY_bfd_copy_private_section_data  PARAMS ((bfd *, asection *, bfd *, asection *));
-static boolean MY_bfd_final_link PARAMS ((bfd *, struct bfd_link_info *));
-reloc_howto_type * tic30_aout_reloc_type_lookup  PARAMS ((bfd *, bfd_reloc_code_real_type));
-enum machine_type tic30_aout_machine_type  PARAMS ((enum bfd_architecture, unsigned long, boolean *));
-boolean tic30_aout_set_arch_mach  PARAMS ((bfd *, enum bfd_architecture, unsigned long));
-
-#define MY_reloc_howto(BFD,REL,IN,EX,PC) tic30_aout_reloc_howto(BFD,REL,&IN,&EX,&PC)
+static const bfd_target *tic30_aout_object_p
+  PARAMS ((bfd *));
+static bfd_boolean tic30_aout_write_object_contents
+  PARAMS ((bfd *));
+static bfd_boolean tic30_aout_set_sizes
+  PARAMS ((bfd *));
+static const bfd_target * tic30_aout_callback
+  PARAMS ((bfd *));
+static bfd_boolean MY_bfd_copy_private_section_data
+  PARAMS ((bfd *, asection *, bfd *, asection *));
+static bfd_boolean MY_bfd_final_link
+  PARAMS ((bfd *, struct bfd_link_info *));
+reloc_howto_type * tic30_aout_reloc_type_lookup
+  PARAMS ((bfd *, bfd_reloc_code_real_type));
+enum machine_type tic30_aout_machine_type
+  PARAMS ((enum bfd_architecture, unsigned long, bfd_boolean *));
+bfd_boolean tic30_aout_set_arch_mach
+  PARAMS ((bfd *, enum bfd_architecture, unsigned long));
+
+#define MY_reloc_howto(BFD, REL, IN, EX, PC) \
+  tic30_aout_reloc_howto(BFD, REL, &IN, &EX, &PC)
 #define MY_final_link_relocate tic30_aout_final_link_relocate
 #define MY_object_p tic30_aout_object_p
 #define MY_mkobject NAME(aout,mkobject)
@@ -107,7 +120,7 @@ boolean tic30_aout_set_arch_mach  PARAMS ((bfd *, enum bfd_architecture, unsigne
 #define MY_finish_dynamic_link 0
 #endif
 
-static CONST struct aout_backend_data tic30_aout_backend_data =
+static const struct aout_backend_data tic30_aout_backend_data =
 {
   MY_zmagic_contiguous,
   MY_text_includes_header,
@@ -138,16 +151,16 @@ static CONST struct aout_backend_data tic30_aout_backend_data =
 reloc_howto_type tic30_aout_howto_table[] =
   {
     EMPTY_HOWTO (-1),
-    HOWTO (1, 2, 1, 16, false, 0, 0, tic30_aout_fix_16,
-          "16", false, 0x0000FFFF, 0x0000FFFF, false),
-    HOWTO (2, 2, 2, 24, false, 0, complain_overflow_bitfield, NULL,
-          "24", false, 0x00FFFFFF, 0x00FFFFFF, false),
-    HOWTO (3, 18, 3, 24, false, 0, complain_overflow_bitfield, NULL,
-          "LDP", false, 0x00FF0000, 0x000000FF, false),
-    HOWTO (4, 2, 4, 32, false, 0, complain_overflow_bitfield, tic30_aout_fix_32,
-          "32", false, 0xFFFFFFFF, 0xFFFFFFFF, false),
-    HOWTO (5, 2, 1, 16, true, 0, complain_overflow_signed,
-          tic30_aout_fix_pcrel_16, "PCREL", true, 0x0000FFFF, 0x0000FFFF, true),
+    HOWTO (1, 2, 1, 16, FALSE, 0, 0, tic30_aout_fix_16,
+          "16", FALSE, 0x0000FFFF, 0x0000FFFF, FALSE),
+    HOWTO (2, 2, 2, 24, FALSE, 0, complain_overflow_bitfield, NULL,
+          "24", FALSE, 0x00FFFFFF, 0x00FFFFFF, FALSE),
+    HOWTO (3, 18, 3, 24, FALSE, 0, complain_overflow_bitfield, NULL,
+          "LDP", FALSE, 0x00FF0000, 0x000000FF, FALSE),
+    HOWTO (4, 2, 4, 32, FALSE, 0, complain_overflow_bitfield, tic30_aout_fix_32,
+          "32", FALSE, 0xFFFFFFFF, 0xFFFFFFFF, FALSE),
+    HOWTO (5, 2, 1, 16, TRUE, 0, complain_overflow_signed,
+          tic30_aout_fix_pcrel_16, "PCREL", TRUE, 0x0000FFFF, 0x0000FFFF, TRUE),
     EMPTY_HOWTO (-1),
     EMPTY_HOWTO (-1),
     EMPTY_HOWTO (-1),
@@ -156,7 +169,7 @@ reloc_howto_type tic30_aout_howto_table[] =
   };
 
 extern reloc_howto_type *NAME (aout, reloc_type_lookup)
-     PARAMS ((bfd *, bfd_reloc_code_real_type));
+  PARAMS ((bfd *, bfd_reloc_code_real_type));
 
 reloc_howto_type *
 tic30_aout_reloc_type_lookup (abfd, code)
@@ -352,7 +365,7 @@ tic30_aout_callback (abfd)
 #ifdef SET_ARCH_MACH
   SET_ARCH_MACH (abfd, *execp);
 #else
-  bfd_default_set_arch_mach (abfd, DEFAULT_ARCH, 0);
+  bfd_default_set_arch_mach (abfd, DEFAULT_ARCH, 0L);
 #endif
 
   /* Now that we know the architecture, set the alignments of the
@@ -412,7 +425,7 @@ tic30_aout_relocate_contents (howto, input_bfd, relocation, location)
      bfd_byte *location;
 {
   bfd_vma x;
-  boolean overflow;
+  bfd_boolean overflow;
 
   if (howto->size < 0)
     relocation = -relocation;
@@ -437,7 +450,7 @@ tic30_aout_relocate_contents (howto, input_bfd, relocation, location)
       break;
     }
 
-  overflow = false;
+  overflow = FALSE;
 
   if (howto->complain_on_overflow != complain_overflow_dont)
     {
@@ -483,21 +496,23 @@ tic30_aout_relocate_contents (howto, input_bfd, relocation, location)
            bfd_signed_vma reloc_signed_max = (1 << (howto->bitsize - 1)) - 1;
            bfd_signed_vma reloc_signed_min = ~reloc_signed_max;
            if (signed_check > reloc_signed_max || signed_check < reloc_signed_min)
-             overflow = true;
+             overflow = TRUE;
          }
          break;
        case complain_overflow_unsigned:
          {
            bfd_vma reloc_unsigned_max = (((1 << (howto->bitsize - 1)) - 1) << 1) | 1;
            if (check > reloc_unsigned_max)
-             overflow = true;
+             overflow = TRUE;
          }
          break;
        case complain_overflow_bitfield:
          {
            bfd_vma reloc_bits = (((1 << (howto->bitsize - 1)) - 1) << 1) | 1;
-           if ((check & ~reloc_bits) != 0 && (((bfd_vma) signed_check & ~reloc_bits) != (-1 & ~reloc_bits)))
-             overflow = true;
+           if ((check & ~reloc_bits) != 0
+               && (((bfd_vma) signed_check & ~reloc_bits)
+                   != ((bfd_vma) -1 & ~reloc_bits)))
+             overflow = TRUE;
          }
          break;
        default:
@@ -538,9 +553,9 @@ tic30_aout_object_p (abfd)
   struct external_exec exec_bytes;     /* Raw exec header from file.  */
   struct internal_exec exec;   /* Cleaned-up exec header.  */
   const bfd_target *target;
+  bfd_size_type amt = EXEC_BYTES_SIZE;
 
-  if (bfd_read ((PTR) & exec_bytes, 1, EXEC_BYTES_SIZE, abfd)
-      != EXEC_BYTES_SIZE)
+  if (bfd_bread ((PTR) &exec_bytes, amt, abfd) != amt)
     {
       if (bfd_get_error () != bfd_error_system_call)
        bfd_set_error (bfd_error_wrong_format);
@@ -550,7 +565,7 @@ tic30_aout_object_p (abfd)
 #ifdef SWAP_MAGIC
   exec.a_info = SWAP_MAGIC (exec_bytes.e_info);
 #else
-  exec.a_info = bfd_h_get_32 (abfd, exec_bytes.e_info);
+  exec.a_info = H_GET_32 (abfd, exec_bytes.e_info);
 #endif /* SWAP_MAGIC */
 
   if (N_BADMAG (exec))
@@ -597,7 +612,7 @@ tic30_aout_object_p (abfd)
    section contents, and copy_private_bfd_data is not called until
    after the section contents have been set.  */
 
-static boolean
+static bfd_boolean
 MY_bfd_copy_private_section_data (ibfd, isec, obfd, osec)
      bfd *ibfd;
      asection *isec ATTRIBUTE_UNUSED;
@@ -606,14 +621,14 @@ MY_bfd_copy_private_section_data (ibfd, isec, obfd, osec)
 {
   if (bfd_get_flavour (obfd) == bfd_target_aout_flavour)
     obj_aout_subformat (obfd) = obj_aout_subformat (ibfd);
-  return true;
+  return TRUE;
 }
 
 /* Write an object file.
    Section contents have already been written.  We write the
    file header, symbols, and relocation.  */
 
-static boolean
+static bfd_boolean
 tic30_aout_write_object_contents (abfd)
      bfd *abfd;
 {
@@ -638,10 +653,12 @@ tic30_aout_write_object_contents (abfd)
 
     if (adata (abfd).exec_bytes_size > 0)
       {
+       bfd_size_type amt;
        if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
-         return false;
-       if (bfd_write ((PTR) & exec_bytes, 1, adata (abfd).exec_bytes_size, abfd) != adata (abfd).exec_bytes_size)
-         return false;
+         return FALSE;
+       amt = adata (abfd).exec_bytes_size;
+       if (bfd_bwrite ((PTR) &exec_bytes, amt, abfd) != amt)
+         return FALSE;
       }
 
     /* Now write out reloc info, followed by syms and strings.  */
@@ -649,27 +666,27 @@ tic30_aout_write_object_contents (abfd)
        && bfd_get_symcount (abfd) != 0)
       {
        if (bfd_seek (abfd, (file_ptr) (N_SYMOFF (*execp)), SEEK_SET) != 0)
-         return false;
+         return FALSE;
 
        if (!NAME (aout, write_syms) (abfd))
-         return false;
+         return FALSE;
       }
 
     if (bfd_seek (abfd, (file_ptr) (N_TRELOFF (*execp)), SEEK_SET) != 0)
-      return false;
+      return FALSE;
     if (!NAME (aout, squirt_out_relocs) (abfd, obj_textsec (abfd)))
-      return false;
+      return FALSE;
 
     if (bfd_seek (abfd, (file_ptr) (N_DRELOFF (*execp)), SEEK_SET) != 0)
-      return false;
+      return FALSE;
     if (!NAME (aout, squirt_out_relocs) (abfd, obj_datasec (abfd)))
-      return false;
+      return FALSE;
   }
 
-  return true;
+  return TRUE;
 }
 
-static boolean
+static bfd_boolean
 tic30_aout_set_sizes (abfd)
      bfd *abfd;
 {
@@ -689,7 +706,7 @@ tic30_aout_set_sizes (abfd)
 
   adata (abfd).exec_bytes_size = EXEC_BYTES_SIZE;
 
-  return true;
+  return TRUE;
 }
 
 #ifndef MY_final_link_callback
@@ -720,7 +737,7 @@ MY_final_link_callback (abfd, ptreloff, pdreloff, psymoff)
 /* Final link routine.  We need to use a call back to get the correct
    offsets in the output file.  */
 
-static boolean
+static bfd_boolean
 MY_bfd_final_link (abfd, info)
      bfd *abfd;
      struct bfd_link_info *info;
@@ -788,40 +805,40 @@ enum machine_type
 tic30_aout_machine_type (arch, machine, unknown)
      enum bfd_architecture arch;
      unsigned long machine ATTRIBUTE_UNUSED;
-     boolean *unknown;
+     bfd_boolean *unknown;
 {
   enum machine_type arch_flags;
 
   arch_flags = M_UNKNOWN;
-  *unknown = true;
+  *unknown = TRUE;
 
   switch (arch)
     {
     case bfd_arch_tic30:
-      *unknown = false;
+      *unknown = FALSE;
       break;
     default:
       arch_flags = M_UNKNOWN;
     }
   if (arch_flags != M_UNKNOWN)
-    *unknown = false;
+    *unknown = FALSE;
   return arch_flags;
 }
 
-boolean
+bfd_boolean
 tic30_aout_set_arch_mach (abfd, arch, machine)
      bfd *abfd;
      enum bfd_architecture arch;
      unsigned long machine;
 {
   if (!bfd_default_set_arch_mach (abfd, arch, machine))
-    return false;
+    return FALSE;
   if (arch != bfd_arch_unknown)
     {
-      boolean unknown;
+      bfd_boolean unknown;
       tic30_aout_machine_type (arch, machine, &unknown);
       if (unknown)
-       return false;
+       return FALSE;
     }
   obj_reloc_entry_size (abfd) = RELOC_STD_SIZE;
   return (*aout_backend_info (abfd)->set_sizes) (abfd);
@@ -883,7 +900,7 @@ tic30_aout_set_arch_mach (abfd, arch, machine)
 #endif
 #ifndef MY_bfd_debug_info_accumulate
 #define MY_bfd_debug_info_accumulate   \
-                       (void (*) PARAMS ((bfd*, struct sec *))) bfd_void
+               (void (*) PARAMS ((bfd*, struct bfd_section *))) bfd_void
 #endif
 
 #ifndef MY_core_file_failing_command
@@ -910,8 +927,8 @@ tic30_aout_set_arch_mach (abfd, arch, machine)
 #ifndef MY_get_symtab_upper_bound
 #define MY_get_symtab_upper_bound NAME(aout,get_symtab_upper_bound)
 #endif
-#ifndef MY_get_symtab
-#define MY_get_symtab NAME(aout,get_symtab)
+#ifndef MY_canonicalize_symtab
+#define MY_canonicalize_symtab NAME(aout,canonicalize_symtab)
 #endif
 #ifndef MY_get_reloc_upper_bound
 #define MY_get_reloc_upper_bound NAME(aout,get_reloc_upper_bound)
@@ -953,6 +970,12 @@ tic30_aout_set_arch_mach (abfd, arch, machine)
 #ifndef MY_bfd_merge_sections
 #define MY_bfd_merge_sections bfd_generic_merge_sections
 #endif
+#ifndef MY_bfd_is_group_section
+#define MY_bfd_is_group_section bfd_generic_is_group_section
+#endif
+#ifndef MY_bfd_discard_group
+#define MY_bfd_discard_group bfd_generic_discard_group
+#endif
 #ifndef MY_bfd_reloc_type_lookup
 #define MY_bfd_reloc_type_lookup tic30_aout_reloc_type_lookup
 #endif
@@ -968,9 +991,15 @@ tic30_aout_set_arch_mach (abfd, arch, machine)
 #ifndef MY_bfd_link_hash_table_create
 #define MY_bfd_link_hash_table_create NAME(aout,link_hash_table_create)
 #endif
+#ifndef MY_bfd_link_hash_table_free
+#define MY_bfd_link_hash_table_free _bfd_generic_link_hash_table_free
+#endif
 #ifndef MY_bfd_link_add_symbols
 #define MY_bfd_link_add_symbols NAME(aout,link_add_symbols)
 #endif
+#ifndef MY_bfd_link_just_syms
+#define MY_bfd_link_just_syms _bfd_generic_link_just_syms
+#endif
 #ifndef MY_bfd_link_split_section
 #define MY_bfd_link_split_section  _bfd_generic_link_split_section
 #endif
@@ -987,6 +1016,10 @@ tic30_aout_set_arch_mach (abfd, arch, machine)
 #define MY_bfd_copy_private_symbol_data _bfd_generic_bfd_copy_private_symbol_data
 #endif
 
+#ifndef MY_bfd_copy_private_header_data
+#define MY_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data
+#endif
+
 #ifndef MY_bfd_print_private_bfd_data
 #define MY_bfd_print_private_bfd_data _bfd_generic_bfd_print_private_bfd_data
 #endif
@@ -1015,6 +1048,10 @@ tic30_aout_set_arch_mach (abfd, arch, machine)
 #define MY_canonicalize_dynamic_symtab \
   _bfd_nodynamic_canonicalize_dynamic_symtab
 #endif
+#ifndef MY_get_synthetic_symtab
+#define MY_get_synthetic_symtab \
+  _bfd_nodynamic_get_synthetic_symtab
+#endif
 #ifndef MY_get_dynamic_reloc_upper_bound
 #define MY_get_dynamic_reloc_upper_bound \
   _bfd_nodynamic_get_dynamic_reloc_upper_bound
This page took 0.030838 seconds and 4 git commands to generate.