Update year range in copyright notice of binutils files
[external/binutils.git] / include / aout / adobe.h
index 3d2f15c..33770f9 100644 (file)
@@ -1,4 +1,21 @@
-/* `a.out.adobe' differences from standard a.out files */
+/* `a.out.adobe' differences from standard a.out files
+
+   Copyright (C) 2001-2018 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
 
 #ifndef __A_OUT_ADOBE_H__
 #define __A_OUT_ADOBE_H__
 
 /* Struct external_exec is the same.  */
 
-/* This is the layout on disk of the 32-bit or 64-bit exec header. */
+/* This is the layout on disk of the 32-bit or 64-bit exec header.  */
 
 struct external_exec 
 {
-  bfd_byte e_info[4];          /* magic number and stuff               */
-  bfd_byte e_text[BYTES_IN_WORD]; /* length of text section in bytes   */
-  bfd_byte e_data[BYTES_IN_WORD]; /* length of data section in bytes   */
-  bfd_byte e_bss[BYTES_IN_WORD]; /* length of bss area in bytes                */
-  bfd_byte e_syms[BYTES_IN_WORD]; /* length of symbol table in bytes   */
-  bfd_byte e_entry[BYTES_IN_WORD]; /* start address                    */
-  bfd_byte e_trsize[BYTES_IN_WORD]; /* length of text relocation info  */
-  bfd_byte e_drsize[BYTES_IN_WORD]; /* length of data relocation info  */
+  bfd_byte e_info[4];              /* Magic number and stuff.  */
+  bfd_byte e_text[BYTES_IN_WORD];   /* Length of text section in bytes.  */
+  bfd_byte e_data[BYTES_IN_WORD];   /* Length of data section in bytes.  */
+  bfd_byte e_bss[BYTES_IN_WORD];    /* Length of bss area in bytes.  */
+  bfd_byte e_syms[BYTES_IN_WORD];   /* Length of symbol table in bytes.  */
+  bfd_byte e_entry[BYTES_IN_WORD];  /* Start address.  */
+  bfd_byte e_trsize[BYTES_IN_WORD]; /* Length of text relocation info.  */
+  bfd_byte e_drsize[BYTES_IN_WORD]; /* Length of data relocation info.  */
 };
 
 #define        EXEC_BYTES_SIZE (4 + BYTES_IN_WORD * 7)
 
-/* Magic numbers for a.out files */
+/* Magic numbers for a.out files */
 
 #undef ZMAGIC
 #define        ZMAGIC  0xAD0BE         /* Cute, eh?  */
 #undef OMAGIC
 #undef NMAGIC
 
-#define N_BADMAG(x)      ((x).a_info != ZMAGIC)
+#define N_BADMAG(x)      ((x)->a_info != ZMAGIC)
 
 /* By default, segment size is constant.  But some machines override this
    to be a function of the a.out header (e.g. machine type).  */
@@ -46,75 +63,79 @@ struct external_exec
    The actual text of the segments starts at N_TXTOFF in the file,
    regardless of how many or how few segment headers there are.  */
 
-struct external_segdesc {
-       unsigned char e_type[1];
-       unsigned char e_size[3];
-       unsigned char e_virtbase[4];
-       unsigned char e_filebase[4];
+struct external_segdesc
+{
+  unsigned char e_type[1];
+  unsigned char e_size[3];
+  unsigned char e_virtbase[4];
+  unsigned char e_filebase[4];
 };
 
-struct internal_segdesc {
-       unsigned int    a_type:8;       /* Segment type N_TEXT, N_DATA, 0 */
-       unsigned int    a_size:24;      /* Segment size */
-       bfd_vma         a_virtbase;     /* Virtual address */
-       unsigned int    a_filebase;     /* Base address in object file */
+struct internal_segdesc
+{
+  unsigned int a_type:8;       /* Segment type N_TEXT, N_DATA, 0.  */
+  unsigned int         a_size:24;      /* Segment size.  */
+  bfd_vma      a_virtbase;     /* Virtual address.  */
+  unsigned int a_filebase;     /* Base address in object file.  */
 };
 
-#define N_TXTADDR(x) \
+#define N_TXTADDR(x) is_this_really_unused?
 
 /* This is documented to be at 1024, but appears to really be at 2048.
    FIXME?!  */
 #define N_TXTOFF(x)    2048
 
-#define        N_TXTSIZE(x) ((x).a_text)
+#define        N_TXTSIZE(x) ((x)->a_text)
 
-#define N_DATADDR(x)
+#define N_DATADDR(x) is_this_really_unused?
 
-#define N_BSSADDR(x)
+#define N_BSSADDR(x) is_this_really_unused?
 
 /* Offsets of the various portions of the file after the text segment.  */
 
 #define N_DATOFF(x)    ( N_TXTOFF(x) + N_TXTSIZE(x) )
-#define N_TRELOFF(x)   ( N_DATOFF(x) + (x).a_data )
-#define N_DRELOFF(x)   ( N_TRELOFF(x) + (x).a_trsize )
-#define N_SYMOFF(x)    ( N_DRELOFF(x) + (x).a_drsize )
-#define N_STROFF(x)    ( N_SYMOFF(x) + (x).a_syms )
+#define N_TRELOFF(x)   ( N_DATOFF(x) + (x)->a_data )
+#define N_DRELOFF(x)   ( N_TRELOFF(x) + (x)->a_trsize )
+#define N_SYMOFF(x)    ( N_DRELOFF(x) + (x)->a_drsize )
+#define N_STROFF(x)    ( N_SYMOFF(x) + (x)->a_syms )
 \f
-/* Symbols */
-struct external_nlist {
-  bfd_byte e_strx[BYTES_IN_WORD];      /* index into string table of name */
-  bfd_byte e_type[1];                  /* type of symbol */
-  bfd_byte e_other[1];                 /* misc info (usually empty) */
-  bfd_byte e_desc[2];                  /* description field */
-  bfd_byte e_value[BYTES_IN_WORD];     /* value of symbol */
+/* Symbols.  */
+struct external_nlist
+{
+  bfd_byte e_strx[BYTES_IN_WORD];      /* Index into string table of name.  */
+  bfd_byte e_type[1];                  /* Type of symbol.  */
+  bfd_byte e_other[1];                 /* Misc info (usually empty).  */
+  bfd_byte e_desc[2];                  /* Description field.  */
+  bfd_byte e_value[BYTES_IN_WORD];     /* Value of symbol.  */
 };
 
 #define EXTERNAL_NLIST_SIZE (BYTES_IN_WORD+4+BYTES_IN_WORD)
 
-struct internal_nlist {
-  unsigned long n_strx;                        /* index into string table of name */
-  unsigned char n_type;                        /* type of symbol */
-  unsigned char n_other;               /* misc info (usually empty) */
-  unsigned short n_desc;               /* description field */
-  bfd_vma n_value;                     /* value of symbol */
+struct internal_nlist
+{
+  unsigned long n_strx;                        /* Index into string table of name.  */
+  unsigned char n_type;                        /* Type of symbol.  */
+  unsigned char n_other;               /* Misc info (usually empty).  */
+  unsigned short n_desc;               /* Description field.  */
+  bfd_vma n_value;                     /* Value of symbol.  */
 };
 
 /* The n_type field is the symbol type, containing:  */
 
-#define N_UNDF 0       /* Undefined symbol */
-#define N_ABS  2       /* Absolute symbol -- defined at particular addr */
-#define N_TEXT         4       /* Text sym -- defined at offset in text seg */
-#define N_DATA         6       /* Data sym -- defined at offset in data seg */
-#define N_BSS  8       /* BSS  sym -- defined at offset in zero'd seg */
-#define        N_COMM  0x12    /* Common symbol (visible after shared lib dynlink) */
-#define N_FN   0x1f    /* File name of .o file */
-#define        N_FN_SEQ 0x0C   /* N_FN from Sequent compilers (sigh) */
+#define N_UNDF 0       /* Undefined symbol */
+#define N_ABS  2       /* Absolute symbol -- defined at particular addr */
+#define N_TEXT         4       /* Text sym -- defined at offset in text seg */
+#define N_DATA         6       /* Data sym -- defined at offset in data seg */
+#define N_BSS  8       /* BSS  sym -- defined at offset in zero'd seg */
+#define        N_COMM  0x12    /* Common symbol (visible after shared lib dynlink) */
+#define N_FN   0x1f    /* File name of .o file */
+#define        N_FN_SEQ 0x0C   /* N_FN from Sequent compilers (sigh) */
 /* Note: N_EXT can only be usefully OR-ed with N_UNDF, N_ABS, N_TEXT,
    N_DATA, or N_BSS.  When the low-order bit of other types is set,
    (e.g. N_WARNING versus N_FN), they are two different types.  */
-#define N_EXT  1       /* External symbol (as opposed to local-to-this-file) */
+#define N_EXT  1       /* External symbol (as opposed to local-to-this-file) */
 #define N_TYPE  0x1e
-#define N_STAB         0xe0    /* If any of these bits are on, it's a debug symbol */
+#define N_STAB         0xe0    /* If any of these bits are on, it's a debug symbol */
 
 #define N_INDR 0x0a
 
@@ -130,10 +151,10 @@ struct internal_nlist {
    in that it can satisfy undefined external references.  */
 
 /* These appear as input to LD, in a .o file.  */
-#define        N_SETA  0x14            /* Absolute set element symbol */
-#define        N_SETT  0x16            /* Text set element symbol */
-#define        N_SETD  0x18            /* Data set element symbol */
-#define        N_SETB  0x1A            /* Bss set element symbol */
+#define        N_SETA  0x14            /* Absolute set element symbol */
+#define        N_SETT  0x16            /* Text set element symbol */
+#define        N_SETD  0x18            /* Data set element symbol */
+#define        N_SETB  0x1A            /* Bss set element symbol */
 
 /* This is output from LD.  */
 #define N_SETV 0x1C            /* Pointer to set vector in data area.  */
@@ -153,25 +174,25 @@ struct internal_nlist {
   instructions. Eg, on the 68k, each move instruction can reference
   the target with a displacement of 16 or 32 bits. On the sparc, move
   instructions use an offset of 14 bits, so the offset is stored in
-  the reloc field, and the data in the section is ignored.
-*/
+  the reloc field, and the data in the section is ignored.  */
 
 /* This structure describes a single relocation to be performed.
    The text-relocation section of the file is a vector of these structures,
    all of which apply to the text section.
    Likewise, the data-relocation section applies to the data section.  */
 
-struct reloc_std_external {
-  bfd_byte r_address[BYTES_IN_WORD];   /* offset of of data to relocate */
-  bfd_byte r_index[3]; /* symbol table index of symbol         */
-  bfd_byte r_type[1];  /* relocation type                      */
+struct reloc_std_external
+{
+  bfd_byte r_address[BYTES_IN_WORD];   /* Offset of data to relocate.  */
+  bfd_byte r_index[3];                 /* Symbol table index of symbol.  */
+  bfd_byte r_type[1];                  /* Relocation type.  */
 };
 
 #define        RELOC_STD_BITS_PCREL_BIG        0x80
 #define        RELOC_STD_BITS_PCREL_LITTLE     0x01
 
 #define        RELOC_STD_BITS_LENGTH_BIG       0x60
-#define        RELOC_STD_BITS_LENGTH_SH_BIG    5       /* To shift to units place */
+#define        RELOC_STD_BITS_LENGTH_SH_BIG    5       /* To shift to units place */
 #define        RELOC_STD_BITS_LENGTH_LITTLE    0x06
 #define        RELOC_STD_BITS_LENGTH_SH_LITTLE 1
 
@@ -187,7 +208,7 @@ struct reloc_std_external {
 #define        RELOC_STD_BITS_RELATIVE_BIG     0x02
 #define        RELOC_STD_BITS_RELATIVE_LITTLE  0x02
 
-#define        RELOC_STD_SIZE  (BYTES_IN_WORD + 3 + 1)         /* Bytes per relocation entry */
+#define        RELOC_STD_SIZE  (BYTES_IN_WORD + 3 + 1)         /* Bytes per relocation entry */
 
 struct reloc_std_internal
 {
@@ -210,21 +231,22 @@ struct reloc_std_internal
   unsigned int r_extern:1;
   /* The next three bits are for SunOS shared libraries, and seem to
      be undocumented.  */
-  unsigned int r_baserel:1;    /* Linkage table relative */
-  unsigned int r_jmptable:1;   /* pc-relative to jump table */
-  unsigned int r_relative:1;   /* "relative relocation" */
+  unsigned int r_baserel:1;    /* Linkage table relative */
+  unsigned int r_jmptable:1;   /* pc-relative to jump table */
+  unsigned int r_relative:1;   /* "relative relocation" */
   /* unused */
-  unsigned int r_pad:1;                /* Padding -- set to zero */
+  unsigned int r_pad:1;                /* Padding -- set to zero */
 };
 
 
 /* EXTENDED RELOCS  */
 
-struct reloc_ext_external {
-  bfd_byte r_address[BYTES_IN_WORD];   /* offset of of data to relocate        */
-  bfd_byte r_index[3]; /* symbol table index of symbol         */
-  bfd_byte r_type[1];  /* relocation type                      */
-  bfd_byte r_addend[BYTES_IN_WORD];    /* datum addend                         */
+struct reloc_ext_external
+{
+  bfd_byte r_address[BYTES_IN_WORD];   /* Offset of data to relocate.  */
+  bfd_byte r_index[3];                 /* Symbol table index of symbol.  */
+  bfd_byte r_type[1];                  /* Relocation type.  */
+  bfd_byte r_addend[BYTES_IN_WORD];    /* Datum addend.  */
 };
 
 #define        RELOC_EXT_BITS_EXTERN_BIG       0x80
@@ -240,15 +262,15 @@ struct reloc_ext_external {
 
 enum reloc_type
 {
-  /* simple relocations */
+  /* Simple relocations.  */
   RELOC_8,                     /* data[0:7] = addend + sv              */
   RELOC_16,                    /* data[0:15] = addend + sv             */
   RELOC_32,                    /* data[0:31] = addend + sv             */
-  /* pc-rel displacement */
+  /* PC-rel displacement.  */
   RELOC_DISP8,                 /* data[0:7] = addend - pc + sv         */
   RELOC_DISP16,                        /* data[0:15] = addend - pc + sv        */
   RELOC_DISP32,                        /* data[0:31] = addend - pc + sv        */
-  /* Special */
+  /* Special */
   RELOC_WDISP30,               /* data[0:29] = (addend + sv - pc)>>2   */
   RELOC_WDISP22,               /* data[0:21] = (addend + sv - pc)>>2   */
   RELOC_HI22,                  /* data[0:21] = (addend + sv)>>10       */
@@ -257,16 +279,16 @@ enum reloc_type
   RELOC_LO10,                  /* data[0:9] = (addend + sv)            */
   RELOC_SFA_BASE,              
   RELOC_SFA_OFF13,
-  /* P.I.C. (base-relative) */
-  RELOC_BASE10,                /* Not sure - maybe we can do this the */
-  RELOC_BASE13,                        /* right way now */
+  /* P.I.C. (base-relative) */
+  RELOC_BASE10,                /* Not sure - maybe we can do this the  */
+  RELOC_BASE13,                        /* right way now */
   RELOC_BASE22,
-  /* for some sort of pc-rel P.I.C. (?) */
+  /* For some sort of pc-rel P.I.C. (?)  */
   RELOC_PC10,
   RELOC_PC22,
-  /* P.I.C. jump table */
+  /* P.I.C. jump table */
   RELOC_JMP_TBL,
-  /* reputedly for shared libraries somehow */
+  /* Reputedly for shared libraries somehow.  */
   RELOC_SEGOFF16,
   RELOC_GLOB_DAT,
   RELOC_JMP_SLOT,
@@ -284,14 +306,14 @@ enum reloc_type
   RELOC_CONSTH,
   
   NO_RELOC
-  };
-
+};
 
-struct reloc_internal {
-  bfd_vma r_address;           /* offset of of data to relocate        */
-  long r_index;                /* symbol table index of symbol         */
-  enum reloc_type r_type;      /* relocation type                      */
-  bfd_vma r_addend;            /* datum addend                         */
+struct reloc_internal
+{
+  bfd_vma r_address;           /* Offset of data to relocate.  */
+  long r_index;                /* Symbol table index of symbol.  */
+  enum reloc_type r_type;      /* Relocation type.  */
+  bfd_vma r_addend;            /* Datum addend.  */
 };
 
-#endif                         /* __A_OUT_ADOBE_H__ */
+#endif /* __A_OUT_ADOBE_H__ */