* alpha-dis.c: Fix formatting.
[deliverable/binutils-gdb.git] / bfd / aout-arm.c
index 743ec95e0e6ea91154bece57383b0e8e735b6f11..ddb03257f41d842bb31946554e7d6f6ddfb351ea 100644 (file)
@@ -1,7 +1,8 @@
 /* BFD back-end for raw ARM a.out binaries.
-   Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+   Copyright 1994, 1995, 1997, 1998, 1999, 2000
+   Free Software Foundation, Inc.
    Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org)
-   
+
 This file is part of BFD, the Binary File Descriptor library.
 
 This program is free software; you can redistribute it and/or modify
@@ -18,7 +19,6 @@ You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
-
 #define N_TXTADDR(x) \
   ((N_MAGIC(x) == NMAGIC) ? 0x8000 : \
    (N_MAGIC(x) != ZMAGIC) ? 0 : \
@@ -38,14 +38,13 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #include "bfd.h"
 #include "sysdep.h"
-#include "assert.h"
 
 #define MYARM(OP) CAT(aoutarm_,OP)
 reloc_howto_type       *MYARM(bfd_reloc_type_lookup)
                                PARAMS((bfd *, bfd_reloc_code_real_type));
 static boolean                 MYARM(write_object_contents)    PARAMS((bfd *));
 
-/* Avoid multiple defininitions from aoutx if supporting standarad a.out 
+/* Avoid multiple defininitions from aoutx if supporting standarad a.out
    as well as our own.  */
 #define NAME(x,y) CAT3(aoutarm,_32_,y)
 
@@ -64,7 +63,7 @@ MY(fix_pcrel_26)       PARAMS ((bfd *, arelent *, asymbol *, PTR,
 static void MY(swap_std_reloc_in) PARAMS ((bfd *, struct reloc_std_external *,
                                           arelent *, asymbol **,
                                           bfd_size_type));
-void MY(swap_std_reloc_out) PARAMS ((bfd *, arelent *, 
+void MY(swap_std_reloc_out) PARAMS ((bfd *, arelent *,
                                     struct reloc_std_external *));
 
 reloc_howto_type MY(howto_table)[] =
@@ -88,7 +87,7 @@ reloc_howto_type MY(howto_table)[] =
   HOWTO (7, 2, 2, 26, false, 0, complain_overflow_signed,
         MY(fix_pcrel_26_done), "ARM26D", true, 0x0, 0x0,
         false),
-  {-1},
+  EMPTY_HOWTO (-1),
   HOWTO (9, 0, -1, 16, false, 0, complain_overflow_bitfield, 0, "NEG16", true,
         0x0000ffff, 0x0000ffff, false),
   HOWTO (10, 0, -2, 32, false, 0, complain_overflow_bitfield, 0, "NEG32", true,
@@ -99,7 +98,7 @@ reloc_howto_type MY(howto_table)[] =
 #define RELOC_ARM_BITS_NEG_LITTLE   ((unsigned int) 0x10)
 
 reloc_howto_type *
-MY(reloc_howto)(abfd, rel, r_index, r_extern, r_pcrel)
+MY(reloc_howto) (abfd, rel, r_index, r_extern, r_pcrel)
      bfd *abfd;
      struct reloc_std_external *rel;
      int *r_index;
@@ -112,7 +111,7 @@ MY(reloc_howto)(abfd, rel, r_index, r_extern, r_pcrel)
   int index;
 
   *r_pcrel = 0;
-  if (abfd->xvec->header_byteorder_big_p)
+  if (bfd_header_big_endian (abfd))
     {
       *r_index     =  ((rel->r_index[0] << 16)
                       | (rel->r_index[1] << 8)
@@ -140,12 +139,12 @@ MY(reloc_howto)(abfd, rel, r_index, r_extern, r_pcrel)
 
   return MY(howto_table) + index;
 }
+
 #define MY_reloc_howto(BFD, REL, IN, EX, PC) \
        MY(reloc_howto) (BFD, REL, &IN, &EX, &PC)
 
 void
-MY(put_reloc)(abfd, r_extern, r_index, value, howto, reloc)
+MY(put_reloc) (abfd, r_extern, r_index, value, howto, reloc)
      bfd *abfd;
      int r_extern;
      int r_index;
@@ -160,13 +159,13 @@ MY(put_reloc)(abfd, r_extern, r_index, value, howto, reloc)
   PUT_WORD (abfd, value, reloc->r_address);
   r_length = howto->size ;     /* Size as a power of two */
 
-  /* Special case for branch relocations. */
+  /* Special case for branch relocations.  */
   if (howto->type == 3 || howto->type == 7)
     r_length = 3;
 
   r_pcrel  = howto->type & 4;  /* PC Relative done? */
   r_neg = howto->type & 8;     /* Negative relocation */
-  if (abfd->xvec->header_byteorder_big_p)
+  if (bfd_header_big_endian (abfd))
     {
       reloc->r_index[0] = r_index >> 16;
       reloc->r_index[1] = r_index >> 8;
@@ -189,12 +188,12 @@ MY(put_reloc)(abfd, r_extern, r_index, value, howto, reloc)
         | (r_length <<  RELOC_STD_BITS_LENGTH_SH_LITTLE));
     }
 }
+
 #define MY_put_reloc(BFD, EXT, IDX, VAL, HOWTO, RELOC) \
-  MY(put_reloc)(BFD, EXT, IDX, VAL, HOWTO, RELOC)
+  MY(put_reloc) (BFD, EXT, IDX, VAL, HOWTO, RELOC)
 
 void
-MY(relocatable_reloc)(howto, abfd, reloc, amount, r_addr)
+MY(relocatable_reloc) (howto, abfd, reloc, amount, r_addr)
      reloc_howto_type *howto;
      bfd *abfd;
      struct reloc_std_external *reloc;
@@ -203,11 +202,11 @@ MY(relocatable_reloc)(howto, abfd, reloc, amount, r_addr)
 {
   if (howto->type == 3)
     {
-      if (reloc->r_type[0] 
-         & (abfd->xvec->header_byteorder_big_p
+      if (reloc->r_type[0]
+         & (bfd_header_big_endian (abfd)
             ? RELOC_STD_BITS_EXTERN_BIG : RELOC_STD_BITS_EXTERN_LITTLE))
        {
-         /* The reloc is still external, so don't modify anything. */
+         /* The reloc is still external, so don't modify anything.  */
          *amount = 0;
        }
       else
@@ -215,7 +214,7 @@ MY(relocatable_reloc)(howto, abfd, reloc, amount, r_addr)
          *amount -= r_addr;
          /* Change the r_pcrel value -- on the ARM, this bit is set once the
             relocation is done.  */
-         if (abfd->xvec->header_byteorder_big_p)
+         if (bfd_header_big_endian (abfd))
            reloc->r_type[0] |= RELOC_STD_BITS_PCREL_BIG;
          else
            reloc->r_type[0] |= RELOC_STD_BITS_PCREL_LITTLE;
@@ -226,18 +225,18 @@ MY(relocatable_reloc)(howto, abfd, reloc, amount, r_addr)
 }
 
 #define MY_relocatable_reloc(HOW, BFD, REL, AMOUNT, ADDR) \
-  MY(relocatable_reloc)(HOW, BFD, REL, &(AMOUNT), ADDR)
+  MY(relocatable_reloc) (HOW, BFD, REL, &(AMOUNT), ADDR)
 
 static bfd_reloc_status_type
 MY(fix_pcrel_26_done) (abfd, reloc_entry, symbol, data, input_section,
                       output_bfd, error_message)
-     bfd *abfd;
-     arelent *reloc_entry;
-     asymbol *symbol;
-     PTR data;
-     asection *input_section;
-     bfd *output_bfd;
-     char **error_message;
+     bfd *abfd ATTRIBUTE_UNUSED;
+     arelent *reloc_entry ATTRIBUTE_UNUSED;
+     asymbol *symbol ATTRIBUTE_UNUSED;
+     PTR data ATTRIBUTE_UNUSED;
+     asection *input_section ATTRIBUTE_UNUSED;
+     bfd *output_bfd ATTRIBUTE_UNUSED;
+     char **error_message ATTRIBUTE_UNUSED;
 {
   /* This is dead simple at present.  */
   return bfd_reloc_ok;
@@ -252,13 +251,13 @@ MY(fix_pcrel_26) (abfd, reloc_entry, symbol, data, input_section,
      PTR data;
      asection *input_section;
      bfd *output_bfd;
-     char **error_message;
+     char **error_message ATTRIBUTE_UNUSED;
 {
   bfd_vma relocation;
   bfd_size_type addr = reloc_entry->address;
   long target = bfd_get_32 (abfd, (bfd_byte *) data + addr);
   bfd_reloc_status_type flag = bfd_reloc_ok;
-  
+
   /* If this is an undefined symbol, return error */
   if (symbol->section == &bfd_und_section
       && (symbol->flags & BSF_WEAK) == 0)
@@ -285,7 +284,7 @@ MY(fix_pcrel_26) (abfd, reloc_entry, symbol, data, input_section,
   /* Check for overflow */
   if (relocation & 0x02000000)
     {
-      if ((relocation & ~0x03ffffff) != ~0x03ffffff)
+      if ((relocation & ~ (bfd_vma) 0x03ffffff) != ~ (bfd_vma) 0x03ffffff)
        flag = bfd_reloc_overflow;
     }
   else if (relocation & ~0x03ffffff)
@@ -298,12 +297,12 @@ MY(fix_pcrel_26) (abfd, reloc_entry, symbol, data, input_section,
   /* Now the ARM magic... Change the reloc type so that it is marked as done.
      Strictly this is only necessary if we are doing a partial relocation.  */
   reloc_entry->howto = &MY(howto_table)[7];
-  
+
   return flag;
 }
 
 reloc_howto_type *
-MY(bfd_reloc_type_lookup)(abfd,code)
+MY(bfd_reloc_type_lookup) (abfd,code)
      bfd *abfd;
      bfd_reloc_code_real_type code;
 {
@@ -344,11 +343,10 @@ MY_swap_std_reloc_in (abfd, bytes, cache_ptr, symbols, symcount)
      struct reloc_std_external *bytes;
      arelent *cache_ptr;
      asymbol **symbols;
-     bfd_size_type symcount;
+     bfd_size_type symcount ATTRIBUTE_UNUSED;
 {
   int r_index;
   int r_extern;
-  unsigned int r_length;
   int r_pcrel;
   struct aoutdata *su = &(abfd->tdata.aout_data->a);
 
@@ -394,11 +392,10 @@ MY_swap_std_reloc_out (abfd, g, natptr)
       r_pcrel = 0;
     }
   else if (g->howto->type == 7)
-    { 
+    {
       r_length = 3;
       r_pcrel = 1;
     }
-  
 
 #if 0
   /* For a standard reloc, the addend is in the object file.  */
@@ -441,7 +438,7 @@ MY_swap_std_reloc_out (abfd, g, natptr)
     }
 
   /* now the fun stuff */
-  if (abfd->xvec->header_byteorder_big_p != false)
+  if (bfd_header_big_endian (abfd))
     {
       natptr->r_index[0] = r_index >> 16;
       natptr->r_index[1] = r_index >> 8;
@@ -469,16 +466,18 @@ MY_swap_std_reloc_out (abfd, g, natptr)
 
 #include "aout-target.h"
 
+extern const bfd_target aout_arm_big_vec;
+
 const bfd_target aout_arm_little_vec =
 {
   "a.out-arm-little",           /* name */
   bfd_target_aout_flavour,
-  false,                        /* target byte order (little) */
-  false,                        /* target headers byte order (little) */
+  BFD_ENDIAN_LITTLE,            /* target byte order (little) */
+  BFD_ENDIAN_LITTLE,            /* target headers byte order (little) */
   (HAS_RELOC | EXEC_P |         /* object flags */
    HAS_LINENO | HAS_DEBUG |
    HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED),
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
+  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA),
   MY_symbol_leading_char,
   AR_PAD_CHAR,                  /* ar_pad_char */
   15,                           /* ar_max_namelen */
@@ -505,6 +504,8 @@ const bfd_target aout_arm_little_vec =
      BFD_JUMP_TABLE_LINK (MY),
      BFD_JUMP_TABLE_DYNAMIC (MY),
 
+  & aout_arm_big_vec,
+
   (PTR) MY_backend_data,
 };
 
@@ -512,12 +513,12 @@ const bfd_target aout_arm_big_vec =
 {
   "a.out-arm-big",           /* name */
   bfd_target_aout_flavour,
-  true,                         /* target byte order (big) */
-  true,                         /* target headers byte order (big) */
+  BFD_ENDIAN_BIG,               /* target byte order (big) */
+  BFD_ENDIAN_BIG,               /* target headers byte order (big) */
   (HAS_RELOC | EXEC_P |         /* object flags */
    HAS_LINENO | HAS_DEBUG |
    HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED),
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
+  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA),
   MY_symbol_leading_char,
   AR_PAD_CHAR,                  /* ar_pad_char */
   15,                           /* ar_max_namelen */
@@ -544,5 +545,7 @@ const bfd_target aout_arm_big_vec =
      BFD_JUMP_TABLE_LINK (MY),
      BFD_JUMP_TABLE_DYNAMIC (MY),
 
+  & aout_arm_little_vec,
+
   (PTR) MY_backend_data,
 };
This page took 0.027153 seconds and 4 git commands to generate.