+/* Internal format of COFF object file data structures, for GNU BFD.
+ This file is part of BFD, the Binary File Descriptor library. */
+
+/* First, make "signed char" work, even on old compilers. */
+#ifndef signed
+#ifndef __STDC__
+#define signed /**/
+#endif
+#endif
+
/********************** FILE HEADER **********************/
struct internal_filehdr
{
unsigned long tagentries; /* number of tag entries to follow */
/* RS/6000 stuff */
- ulong o_toc; /* address of TOC */
- short o_snentry; /* section number for entry point */
- short o_sntext; /* section number for text */
- short o_sndata; /* section number for data */
- short o_sntoc; /* section number for toc */
- short o_snloader; /* section number for loader section */
- short o_snbss; /* section number for bss */
- short o_algntext; /* max alignment for text */
- short o_algndata; /* max alignment for data */
- short o_modtype; /* Module type field, 1R,RE,RO */
- ulong o_maxstack; /* max stack size allowed. */
-} ;
+ unsigned long o_toc; /* address of TOC */
+ short o_snentry; /* section number for entry point */
+ short o_sntext; /* section number for text */
+ short o_sndata; /* section number for data */
+ short o_sntoc; /* section number for toc */
+ short o_snloader; /* section number for loader section */
+ short o_snbss; /* section number for bss */
+ short o_algntext; /* max alignment for text */
+ short o_algndata; /* max alignment for data */
+ short o_modtype; /* Module type field, 1R,RE,RO */
+ unsigned long o_maxstack; /* max stack size allowed. */
+};
/********************** STORAGE CLASSES **********************/
#define C_EINCL 109 /* Marks ending of include file */
/* storage classes for stab symbols for RS/6000 */
-#define C_GSYM 0x80
-#define C_LSYM 0x81
-#define C_PSYM 0x82
-#define C_RSYM 0x83
-#define C_RPSYM 0x84
-#define C_STSYM 0x85
-#define C_TCSYM 0x86
-#define C_BCOMM 0x87
-#define C_ECOML 0x88
-#define C_ECOMM 0x89
-#define C_DECL 0x8c
-#define C_ENTRY 0x8d
-#define C_FUN 0x8e
-#define C_BSTAT 0x8f
-#define C_ESTAT 0x90
+#define C_GSYM ((signed char)0x80)
+#define C_LSYM ((signed char)0x81)
+#define C_PSYM ((signed char)0x82)
+#define C_RSYM ((signed char)0x83)
+#define C_RPSYM ((signed char)0x84)
+#define C_STSYM ((signed char)0x85)
+#define C_TCSYM ((signed char)0x86)
+#define C_BCOMM ((signed char)0x87)
+#define C_ECOML ((signed char)0x88)
+#define C_ECOMM ((signed char)0x89)
+#define C_DECL ((signed char)0x8c)
+#define C_ENTRY ((signed char)0x8d)
+#define C_FUN ((signed char)0x8e)
+#define C_BSTAT ((signed char)0x8f)
+#define C_ESTAT ((signed char)0x90)
/********************** SECTION HEADER **********************/
struct internal_scnhdr {
long s_scnptr; /* file ptr to raw data for section */
long s_relptr; /* file ptr to relocation */
long s_lnnoptr; /* file ptr to line numbers */
-#ifdef M88
- unsigned long s_nreloc;
- unsigned long s_nlnno;
-#else
- unsigned short s_nreloc; /* number of relocation entries */
- unsigned short s_nlnno; /* number of line number entries*/
-#endif
+ unsigned long s_nreloc; /* number of relocation entries */
+ unsigned long s_nlnno; /* number of line number entries*/
long s_flags; /* flags */
#ifdef I960
long s_align;
long l_symndx; /* function name symbol index, iff l_lnno == 0*/
long l_paddr; /* (physical) address of line number */
} l_addr;
-#ifdef M88
unsigned long l_lnno; /* line number */
-#else
- unsigned short l_lnno; /* line number */
-#endif
};
short n_scnum; /* section number */
unsigned short n_flags; /* copy of flags from filhdr */
unsigned short n_type; /* type and derived type */
-#if __STDC__
- signed
-#endif
- char n_sclass; /* storage class */
+ signed char n_sclass; /* storage class */
char n_numaux; /* number of aux. entries */
};
#define n_name _n._n_name
unsigned short x_snstab; /* sect num with dbx stab */
} x_csect; /* csect definition information */
+/* x_smtyp values: */
+
+#define SMTYP_ALIGN(x) ((x) >> 3) /* log2 of alignment */
+#define SMTYP_SMTYP(x) ((x) & 0x7) /* symbol type */
+/* Symbol type values: */
+#define XTY_ER 0 /* External reference */
+#define XTY_SD 1 /* Csect definition */
+#define XTY_LD 2 /* Label definition */
+#define XTY_CM 3 /* .BSS */
+#define XTY_EM 4 /* Error message */
+#define XTY_US 5 /* "Reserved for internal use" */
+
+/* x_smclas values: */
+
+#define XMC_PR 0 /* Read-only program code */
+#define XMC_RO 1 /* Read-only constant */
+#define XMC_DB 2 /* Read-only debug dictionary table */
+#define XMC_TC 3 /* Read-write general TOC entry */
+#define XMC_UA 4 /* Read-write unclassified */
+#define XMC_RW 5 /* Read-write data */
+#define XMC_GL 6 /* Read-only global linkage */
+#define XMC_XO 7 /* Read-only extended operation (simulated insn) */
+#define XMC_SV 8 /* Read-only supervisor call */
+#define XMC_BS 9 /* Read-write BSS */
+#define XMC_DS 10 /* Read-write descriptor csect */
+#define XMC_UC 11 /* Read-write unnamed Fortran common */
+#define XMC_TI 12 /* Read-only traceback index csect */
+#define XMC_TB 13 /* Read-only traceback table csect */
+/* 14 ??? */
+#define XMC_TC0 15 /* Read-write TOC anchor for TOC addressability */
+
+
/******************************************
* I960-specific *2nd* aux. entry formats
******************************************/
/********************** RELOCATION DIRECTIVES **********************/
-struct internal_reloc {
+struct internal_reloc
+{
long r_vaddr; /* Virtual address of reference */
long r_symndx; /* Index into symbol table */
unsigned short r_type; /* Relocation type */
unsigned char r_size;
#endif
-#if M88
unsigned short r_offset;
-#endif
+
};
#define R_RELBYTE 017