Convert unmaintained files over to ISO-C90 and fix formatting.
[platform/upstream/binutils.git] / gas / config / obj-bout.h
index 278fcc4..f51b878 100644 (file)
    to the Free Software Foundation, 59 Temple Place - Suite 330, Cambridge, MA
    02139, USA.  */
 
-/*
- * This file is a modified version of 'a.out.h'.  It is to be used in all GNU
- * tools modified to support the i80960 b.out format (or tools that operate on
- * object files created by such tools).
- *
- * All i80960 development is done in a CROSS-DEVELOPMENT environment.  I.e.,
- * object code is generated on, and executed under the direction of a symbolic
- * debugger running on, a host system.  We do not want to be subject to the
- * vagaries of which host it is or whether it supports COFF or a.out format, or
- * anything else.  We DO want to:
- *
- *     o always generate the same format object files, regardless of host.
- *
- *     o have an 'a.out' header that we can modify for our own purposes
- *       (the 80960 is typically an embedded processor and may require
- *       enhanced linker support that the normal a.out.h header can't
- *       accommodate).
- *
- * As for byte-ordering, the following rules apply:
- *
- *     o Text and data that is actually downloaded to the target is always
- *       in i80960 (little-endian) order.
- *
- *     o All other numbers (in the header, symbols, relocation directives)
- *       are in host byte-order:  object files CANNOT be lifted from a
- *       little-end host and used on a big-endian (or vice versa) without
- *       modification.
- * ==> THIS IS NO LONGER TRUE USING BFD.  WE CAN GENERATE ANY BYTE ORDER
- *     FOR THE HEADER, AND READ ANY BYTE ORDER.  PREFERENCE WOULD BE TO
- *     USE LITTLE-ENDIAN BYTE ORDER THROUGHOUT, REGARDLESS OF HOST.  <==
- *
- *     o The downloader ('comm960') takes care to generate a pseudo-header
- *       with correct (i80960) byte-ordering before shipping text and data
- *       off to the NINDY monitor in the target systems.  Symbols and
- *       relocation info are never sent to the target.
- */
+/* This file is a modified version of 'a.out.h'.  It is to be used in all GNU
+   tools modified to support the i80960 b.out format (or tools that operate on
+   object files created by such tools).
+
+   All i80960 development is done in a CROSS-DEVELOPMENT environment.  I.e.,
+   object code is generated on, and executed under the direction of a symbolic
+   debugger running on, a host system.  We do not want to be subject to the
+   vagaries of which host it is or whether it supports COFF or a.out format, or
+   anything else.  We DO want to:
+
+       o always generate the same format object files, regardless of host.
+
+       o have an 'a.out' header that we can modify for our own purposes
+         (the 80960 is typically an embedded processor and may require
+         enhanced linker support that the normal a.out.h header can't
+         accommodate).
+
+   As for byte-ordering, the following rules apply:
+
+       o Text and data that is actually downloaded to the target is always
+         in i80960 (little-endian) order.
+
+       o All other numbers (in the header, symbols, relocation directives)
+         are in host byte-order:  object files CANNOT be lifted from a
+         little-end host and used on a big-endian (or vice versa) without
+         modification.
+   ==> This is no longer true using BFD.  We can generate any byte order
+       for the header, and read any byte order.  Preference would be to
+       use little-endian byte order throughout, regardless of host.  <==
+
+       o The downloader ('comm960') takes care to generate a pseudo-header
+         with correct (i80960) byte-ordering before shipping text and data
+         off to the NINDY monitor in the target systems.  Symbols and
+         relocation info are never sent to the target.  */
 
 #define OBJ_BOUT 1
 
@@ -69,46 +67,44 @@ extern const segT N_TYPE_seg[];
 
 #define BMAGIC 0415
 /* We don't accept the following (see N_BADMAG macro).
- * They're just here so GNU code will compile.
- */
-#define        OMAGIC  0407            /* old impure format */
-#define        NMAGIC  0410            /* read-only text */
-#define        ZMAGIC  0413            /* demand load format */
+   They're just here so GNU code will compile.  */
+#define        OMAGIC  0407            /* Old impure format.  */
+#define        NMAGIC  0410            /* Read-only text.  */
+#define        ZMAGIC  0413            /* Demand load format.  */
 
 #ifndef DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE
-#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE   (BMAGIC)
-#endif /* DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE */
-
-/* FILE HEADER
- *     All 'lengths' are given as a number of bytes.
- *     All 'alignments' are for relinkable files only;  an alignment of
- *             'n' indicates the corresponding segment must begin at an
- *             address that is a multiple of (2**n).
- */
+#define DEFAULT_MAGIC_NUMBER_FOR_OBJECT_FILE   BMAGIC
+#endif
+
+/* File header:
+   All 'lengths' are given as a number of bytes.
+   All 'alignments' are for relinkable files only;  an alignment of
+   'n' indicates the corresponding segment must begin at an
+   address that is a multiple of (2**n).  */
 struct exec
-  {
-    /* Standard stuff */
-    unsigned long a_magic;     /* Identifies this as a b.out file      */
-    unsigned long a_text;      /* Length of text                       */
-    unsigned long a_data;      /* Length of data                       */
-    unsigned long a_bss;       /* Length of runtime uninitialized data area */
-    unsigned long a_syms;      /* Length of symbol table               */
-    unsigned long a_entry;     /* Runtime start address                */
-    unsigned long a_trsize;    /* Length of text relocation info       */
-    unsigned long a_drsize;    /* Length of data relocation info       */
-
-    /* Added for i960 */
-    unsigned long a_tload;     /* Text runtime load address            */
-    unsigned long a_dload;     /* Data runtime load address            */
-    unsigned char a_talign;    /* Alignment of text segment            */
-    unsigned char a_dalign;    /* Alignment of data segment            */
-    unsigned char a_balign;    /* Alignment of bss segment             */
-    unsigned char a_relaxable; /* Contains enough info to relax     */
-  };
+{
+  /* Standard stuff.  */
+  unsigned long a_magic;       /* Identifies this as a b.out file.     */
+  unsigned long a_text;                /* Length of text.                      */
+  unsigned long a_data;                /* Length of data.                      */
+  unsigned long a_bss;         /* Length of runtime uninitialized data area.  */
+  unsigned long a_syms;                /* Length of symbol table.              */
+  unsigned long a_entry;       /* Runtime start address.               */
+  unsigned long a_trsize;      /* Length of text relocation info.      */
+  unsigned long a_drsize;      /* Length of data relocation info.      */
+
+  /* Added for i960 */
+  unsigned long a_tload;       /* Text runtime load address.           */
+  unsigned long a_dload;       /* Data runtime load address.           */
+  unsigned char a_talign;      /* Alignment of text segment.           */
+  unsigned char a_dalign;      /* Alignment of data segment.           */
+  unsigned char a_balign;      /* Alignment of bss segment.            */
+  unsigned char a_relaxable;   /* Contains enough info to relax.       */
+};
 
 #define        EXEC_BYTES_SIZE (10 * 4 + 4 * 1)
 
-#define N_BADMAG(x)    (((x).a_magic)!=BMAGIC)
+#define N_BADMAG(x)    (((x).a_magic) != BMAGIC)
 #define N_TXTOFF(x)    EXEC_BYTES_SIZE
 #define N_DATOFF(x)    ( N_TXTOFF(x) + (x).a_text )
 #define N_TROFF(x)     ( N_DATOFF(x) + (x).a_data )
@@ -116,72 +112,66 @@ struct exec
 #define N_SYMOFF(x)    ( N_DROFF(x) + (x).a_drsize )
 #define N_STROFF(x)    ( N_SYMOFF(x) + (x).a_syms )
 
-/* A single entry in the symbol table
- */
+/* A single entry in the symbol table.  */
 struct nlist
   {
     union
       {
        char *n_name;
        struct nlist *n_next;
-       long n_strx;            /* Index into string table      */
+       long n_strx;            /* Index into string table.  */
       }
     n_un;
-    unsigned char n_type;      /* See below                            */
-    char n_other;              /* Used in i80960 support -- see below  */
+    unsigned char n_type;      /* See below.  */
+    char n_other;              /* Used in i80960 support -- see below.  */
     short n_desc;
     unsigned long n_value;
   };
 
 typedef struct nlist obj_symbol_type;
 
-/* Legal values of n_type
- */
-#define N_UNDF 0               /* Undefined symbol     */
-#define N_ABS  2               /* Absolute symbol      */
-#define N_TEXT 4               /* Text symbol          */
-#define N_DATA 6               /* Data symbol          */
-#define N_BSS  8               /* BSS symbol           */
-#define N_FN   31              /* Filename symbol      */
+/* Legal values of n_type.  */
+#define N_UNDF 0               /* Undefined symbol.    */
+#define N_ABS  2               /* Absolute symbol.     */
+#define N_TEXT 4               /* Text symbol.         */
+#define N_DATA 6               /* Data symbol.         */
+#define N_BSS  8               /* BSS symbol.          */
+#define N_FN   31              /* Filename symbol.     */
 
-#define N_EXT  1               /* External symbol (OR'd in with one of above)  */
-#define N_TYPE 036             /* Mask for all the type bits                   */
-#define N_STAB 0340            /* Mask for all bits used for SDB entries       */
+#define N_EXT  1               /* External symbol (OR'd in with one of above). */
+#define N_TYPE 036             /* Mask for all the type bits.                  */
+#define N_STAB 0340            /* Mask for all bits used for SDB entries.      */
 
 #ifndef CUSTOM_RELOC_FORMAT
 struct relocation_info
   {
-    int r_address;             /* File address of item to be relocated */
+    int r_address;             /* File address of item to be relocated.        */
     unsigned
-      r_index:24,              /* Index of symbol on which relocation is based*/
+      r_index:24,              /* Index of symbol on which relocation is based.  */
       r_pcrel:1,               /* 1 => relocate PC-relative; else absolute
-                *      On i960, pc-relative implies 24-bit
-                *      address, absolute implies 32-bit.
-                */
+                                       On i960, pc-relative implies 24-bit
+                                       address, absolute implies 32-bit.  */
       r_length:2,              /* Number of bytes to relocate:
-                *      0 => 1 byte
-                *      1 => 2 bytes
-                *      2 => 4 bytes -- only value used for i960
-                */
-      r_extern:1, r_bsr:1,     /* Something for the GNU NS32K assembler */
-      r_disp:1,                        /* Something for the GNU NS32K assembler */
-      r_callj:1,               /* 1 if relocation target is an i960 'callj' */
-      nuthin:1;                        /* Unused                               */
+                                       0 => 1 byte
+                                       1 => 2 bytes
+                                       2 => 4 bytes -- only value used for i960.  */
+      r_extern:1, r_bsr:1,     /* Something for the GNU NS32K assembler.  */
+      r_disp:1,                        /* Something for the GNU NS32K assembler.  */
+      r_callj:1,               /* 1 if relocation target is an i960 'callj'.  */
+      nuthin:1;                        /* Unused.  */
   };
 
 #endif /* CUSTOM_RELOC_FORMAT */
 
-/*
- *  Macros to extract information from a symbol table entry.
- *  This syntactic indirection allows independence regarding a.out or coff.
- *  The argument (s) of all these macros is a pointer to a symbol table entry.
- */
+/* Macros to extract information from a symbol table entry.
+   This syntactic indirection allows independence regarding a.out or coff.
+   The argument (s) of all these macros is a pointer to a symbol table entry.  */
 
-/* Predicates */
-/* True if the symbol is external */
+/* Predicates */
+/* True if the symbol is external */
 #define S_IS_EXTERNAL(s)       ((s)->sy_symbol.n_type & N_EXT)
 
-/* True if symbol has been defined, ie is in N_{TEXT,DATA,BSS,ABS} or N_EXT */
+/* True if symbol has been defined, ie is in N_{TEXT,DATA,BSS,ABS} or N_EXT */
 #define S_IS_DEFINED(s)                ((S_GET_TYPE(s) != N_UNDF) || (S_GET_DESC(s) != 0))
 
 /* Return true for symbols that should not be reduced to section
@@ -195,9 +185,9 @@ struct relocation_info
 
 #define S_IS_REGISTER(s)       ((s)->sy_symbol.n_type == N_REGISTER)
 
-/* True if a debug special symbol entry */
+/* True if a debug special symbol entry */
 #define S_IS_DEBUG(s)          ((s)->sy_symbol.n_type & N_STAB)
-/* True if a symbol is local symbol name */
+/* True if a symbol is local symbol name */
 #define S_IS_LOCAL(s)                                  \
   ((S_GET_NAME (s)                                     \
     && !S_IS_DEBUG (s)                                         \
@@ -207,52 +197,53 @@ struct relocation_info
    || (flag_strip_local_absolute                       \
        && !S_IS_EXTERNAL(s)                            \
        && S_GET_SEGMENT(s) == absolute_section))
-/* True if a symbol is not defined in this file */
+/* True if a symbol is not defined in this file */
 #define S_IS_EXTERN(s)         ((s)->sy_symbol.n_type & N_EXT)
-/* True if the symbol has been generated because of a .stabd directive */
+/* True if the symbol has been generated because of a .stabd directive */
 #define S_IS_STABD(s)          (S_GET_NAME(s) == NULL)
 
-/* Accessors */
-/* The name of the symbol */
+/* Accessors */
+/* The name of the symbol */
 #define S_GET_NAME(s)          ((s)->sy_symbol.n_un.n_name)
-/* The pointer to the string table */
+/* The pointer to the string table */
 #define S_GET_OFFSET(s)                ((s)->sy_symbol.n_un.n_strx)
-/* The type of the symbol */
+/* The type of the symbol */
 #define S_GET_TYPE(s)          ((s)->sy_symbol.n_type & N_TYPE)
-/* The numeric value of the segment */
+/* The numeric value of the segment */
 #define S_GET_SEGMENT(s)       (N_TYPE_seg[S_GET_TYPE(s)])
-/* The n_other expression value */
+/* The n_other expression value */
 #define S_GET_OTHER(s)         ((s)->sy_symbol.n_other)
-/* The n_desc expression value */
+/* The n_desc expression value */
 #define S_GET_DESC(s)          ((s)->sy_symbol.n_desc)
 
-/* Modifiers */
-/* Assume that a symbol cannot be simultaneously in more than on segment */
-/* set segment */
-#define S_SET_SEGMENT(s,seg)   ((s)->sy_symbol.n_type &= ~N_TYPE,(s)->sy_symbol.n_type|=SEGMENT_TO_SYMBOL_TYPE(seg))
-/* The symbol is external */
+/* Modifiers */
+/* Assume that a symbol cannot be simultaneously in more than on segment */
+/* Set segment.  */
+#define S_SET_SEGMENT(s,seg)   ((s)->sy_symbol.n_type &= ~N_TYPE,(s)->sy_symbol.n_type |= SEGMENT_TO_SYMBOL_TYPE (seg))
+/* The symbol is external */
 #define S_SET_EXTERNAL(s)      ((s)->sy_symbol.n_type |= N_EXT)
-/* The symbol is not external */
+/* The symbol is not external */
 #define S_CLEAR_EXTERNAL(s)    ((s)->sy_symbol.n_type &= ~N_EXT)
-/* Set the name of the symbol */
+/* Set the name of the symbol */
 #define S_SET_NAME(s,v)                ((s)->sy_symbol.n_un.n_name = (v))
-/* Set the offset in the string table */
+/* Set the offset in the string table */
 #define S_SET_OFFSET(s,v)      ((s)->sy_symbol.n_un.n_strx = (v))
-/* Set the n_other expression value */
+/* Set the n_other expression value */
 #define S_SET_OTHER(s,v)       ((s)->sy_symbol.n_other = (v))
-/* Set the n_desc expression value */
+/* Set the n_desc expression value */
 #define S_SET_DESC(s,v)                ((s)->sy_symbol.n_desc = (v))
-/* Set the n_type value */
+/* Set the n_type value */
 #define S_SET_TYPE(s,v)                ((s)->sy_symbol.n_type = (v))
 
-/* File header macro and type definition */
+/* File header macro and type definition */
 
-#define H_GET_FILE_SIZE(h)     (EXEC_BYTES_SIZE + \
-                                H_GET_TEXT_SIZE(h) + H_GET_DATA_SIZE(h) + \
-                                H_GET_SYMBOL_TABLE_SIZE(h) + \
-                                H_GET_TEXT_RELOCATION_SIZE(h) + \
-                                H_GET_DATA_RELOCATION_SIZE(h) + \
-                                (h)->string_table_size)
+#define H_GET_FILE_SIZE(h)     (EXEC_BYTES_SIZE \
+                               + H_GET_TEXT_SIZE (h) \
+                               + H_GET_DATA_SIZE(h) \
+                               + H_GET_SYMBOL_TABLE_SIZE (h) \
+                               + H_GET_TEXT_RELOCATION_SIZE (h) \
+                               + H_GET_DATA_RELOCATION_SIZE (h) \
+                               + (h)->string_table_size)
 
 #define H_GET_HEADER_SIZE(h)           EXEC_BYTES_SIZE
 #define H_GET_TEXT_SIZE(h)             ((h)->header.a_text)
@@ -268,10 +259,10 @@ struct relocation_info
 
 #ifdef EXEC_MACHINE_TYPE
 #define H_GET_MACHINE_TYPE(h)          ((h)->header.a_machtype)
-#endif /* EXEC_MACHINE_TYPE */
+#endif /* EXEC_MACHINE_TYPE */
 #ifdef EXEC_VERSION
 #define H_GET_VERSION(h)               ((h)->header.a_version)
-#endif /* EXEC_VERSION */
+#endif /* EXEC_VERSION */
 
 #define H_SET_TEXT_SIZE(h,v)           ((h)->header.a_text = (v))
 #define H_SET_DATA_SIZE(h,v)           ((h)->header.a_data = (v))
@@ -290,20 +281,20 @@ struct relocation_info
 #define H_SET_STRING_SIZE(h,v)         ((h)->string_table_size = (v))
 #ifdef EXEC_MACHINE_TYPE
 #define H_SET_MACHINE_TYPE(h,v)                ((h)->header.a_machtype = (v))
-#endif /* EXEC_MACHINE_TYPE */
+#endif /* EXEC_MACHINE_TYPE */
 #ifdef EXEC_VERSION
 #define H_SET_VERSION(h,v)             ((h)->header.a_version = (v))
-#endif /* EXEC_VERSION */
+#endif /* EXEC_VERSION */
 
 typedef struct
   {
-    struct exec header;                /* a.out header */
-    long string_table_size;    /* names + '\0' + sizeof (int) */
+    struct exec header;                /* a.out header */
+    long string_table_size;    /* names + '\0' + sizeof (int) */
   }
 
 object_headers;
 
-/* unused hooks.  */
+/* Unused hooks.  */
 #define OBJ_EMIT_LINENO(a, b, c)       {;}
 #define obj_pre_write_hook(a)          {;}
 
@@ -313,14 +304,9 @@ object_headers;
 #define host_number_to_chars number_to_chars_littleendian
 #endif
 
-#if __STDC__
 struct fix;
-#endif
-extern void tc_aout_fix_to_chars PARAMS ((char *where,
-                                         struct fix *fixP,
-                                         relax_addressT segment_address));
-extern void tc_bout_fix_to_chars PARAMS ((char *where,
-                                         struct fix *fixP,
-                                         relax_addressT segment_address));
+
+extern void tc_aout_fix_to_chars (char *, struct fix *, relax_addressT);
+extern void tc_bout_fix_to_chars (char *, struct fix *, relax_addressT);
 
 #define AOUT_STABS