ref: 79dd4bd00f26488b4cb49b689878e9bd2c1711ad
parent: 3aa27c3da9cf49c6f8082f09a295b7cf241c9a65
author: Eddie Thieda <eddie.thieda@gmail.com>
date: Wed Feb 6 06:35:56 EST 2019
Deleted help file.
--- a/src/libmach/coff32/coff-help.h
+++ /dev/null
@@ -1,576 +1,0 @@
-/*
-******************************************************************
-** 29K COFF Declarations **
-** **
-** **
-** This file contains the declarations required to define **
-** the COFF format as proposed for use by AMD for the 29K **
-** family of RISC microprocessors. **
-** **
-** No attempt is made here to describe in detail those portions **
-** of COFF which have not been modified or extended. Pertinent **
-** #define's and struct's are included for completeness. Those **
-** declarations are distributed in several System V headers. **
-** **
-** For a better and more complete description of COFF with **
-** general and 29K Family specific clarifications, see the **
-** AMD's "Programmer's Guide to the Common Object File Format **
-** (COFF) for the Am29000" Application Note, order number 11963.**
-** **
-** For non-29K-Family specific COFF information, consult AT&T **
-** UNIX System V Release 3, Programmer's Guide, Chapter 11 **
-** (Manual 307-225, Issue 1). **
-** **
-** **
-** Revision history: **
-** **
-** 0.01 JG - first published **
-** 0.02 JG - added relocation type R_IFAR and renumbered **
-** 0.03 RC - COFF spec now compiles without error **
-** 0.04 RC - removed R_IPAIR and R_IFAR and renumbered **
-** 0.05 RC - added R_HWORD relocation type **
-** 0.06 RC - section types **
-** changed value of STYP_BSSREG **
-** replaced STYP_RDATA and STYP_IDATA **
-** with STYP_LIT, STYP_ABS, and STYP_ENVIR **
-** - relocation types **
-** added R_IABS **
-** replaced R_IBYTE with R_BYTE and renumbered **
-** - changed comments and removed comments **
-** 0.07 RC - relocation types **
-** Added R_IHCONST to support relocation offsets **
-** for CONSTH instruction. Added commentary, **
-** and renumbered to make room for R_IHCONST, **
-** putting the (as yet unused) global reloc **
-** types at the end. **
-** - bug fix (typo) **
-** Added slash to terminate comment field on **
-** C_EXT so now C_STAT is defined. **
-** 0.08 RC - official magic numbers assigned by AT&T. **
-** 0.09 RC - support multiple address spaces by adding magic **
-** a.out header numbers SASMAGIC and MASMAGIC. **
-** 0.10 RC - No changes. Just added the comments below and **
-** corrected comments on tsize, dsize, and bsize. **
-** - All portions of the COFF file described as C **
-** structs must use Host Endian byte ordering. **
-** Files created on a machine with a byte **
-** ordering different from the host may be **
-** converted using the UNIX conv(1) command. **
-** - Assemblers and compilers must create section **
-** headers for .text, .data, and .bss (in that **
-** order) even if they are 0 length. **
-** - tsize, dsize, and bsize are the size of .text, **
-** .data, and .bss respectively. Other sections **
-** of type STYP_TEXT, STYP_DATA, and STYP_BSS **
-** are not included in the byte count. **
-** - Assemblers and compilers must create output **
-** sections to the exact byte length (and not **
-** round them up). The linker will take care **
-** of rounding. **
-** 2.1.01 - Added C_STARTOF storage class for support of **
-** assembler $startof(sect_name) and **
-** $sizeof(sect_name) operators. **
-** 2.1.02 - Added a few more defines for completeness. **
-** 2.1.03 - Added more magic numbers for completeness. **
-******************************************************************
-*/
-
-/*
-** Overall structure of a COFF file
-*/
-
-/*
- *--------------------------------*
- | File Header |
- ----------------------------------
- | Optional Information |
- ----------------------------------
- | Section 1 Header |
- ----------------------------------
- | ... |
- ----------------------------------
- | Section n Header |
- ----------------------------------
- | Raw Data for Section 1 |
- ----------------------------------
- | ... |
- ----------------------------------
- | Raw Data for Section n |
- ----------------------------------
- | Relocation Info for Section 1 |
- ----------------------------------
- | ... |
- ----------------------------------
- | Relocation Info for Section n |
- ----------------------------------
- | Line Numbers for Section 1 |
- ----------------------------------
- | ... |
- ----------------------------------
- | Line Numbers for Section n |
- ----------------------------------
- | Symbol Table |
- ----------------------------------
- | String Table |
- *--------------------------------*
-*/
-
-/****************************************************************/
-
-
-/*
-** File Header and related definitions
-*/
-
-struct filehdr
-{
- unsigned short f_magic; /* magic number */
- unsigned short f_nscns; /* number of sections */
- long f_timdat; /* time & date stamp */
- long f_symptr; /* file pointer to symtab */
- long f_nsyms; /* number of symtab entries */
- unsigned short f_opthdr; /* sizeof(optional hdr) */
- unsigned short f_flags; /* flags */
-};
-
-#define FILHDR struct filehdr
-#define FILHSZ sizeof (FILHDR)
-
-/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
-/*
-** Magic numbers currently known to us,
-** Plus 29K magic numbers assigned by AT&T.
-*/
-
-#define M68MAGIC 0210
-#define M68TVMAGIC 0211
-#define B16MAGIC 0502
-#define BTVMAGIC 0503
-#define IAPX16 0504
-#define IAPX16TV 0505
-#define IAPX20 0506
-#define IAPX20TV 0507
-#define X86MAGIC 0510
-#define XTVMAGIC 0511
-#define I286SMAGIC 0512
-#define I386MAGIC 0514
-#define MC68MAGIC 0520
-#define MC68KWRMAGIC 0520 /* 68K writeable text sections */
-#define MC68TVMAGIC 0521
-#define MC68KPGMAGIC 0522 /* 68K demand paged text (shared with i286) */
-#define I286LMAGIC 0522 /* i286 (shared with 68K) */
-/* 0524 * reserved for NSC */
-/* 0525 * reserved for NSC */
-/* 0544 * reserved for Zilog */
-/* 0545 * reserved for Zilog */
-#define N3BMAGIC 0550 /* 3B20S executable, no TV */
-#define NTVMAGIC 0551 /* 3B20 executable with TV */
-#define FBOMAGIC 0560 /* WE*-32 (Forward Byte Ordering) */
-#define WE32MAGIC 0560 /* WE 32000, no TV */
-#define MTVMAGIC 0561 /* WE 32000 with TV */
-#define RBOMAGIC 0562 /* WE-32 (Reverse Byte Ordering) */
-#define VAXWRMAGIC 0570 /* VAX-11/750 and VAX-11/780 */
- /* (writable text sections) */
-#define VAXROMAGIC 0575 /* VAX-11/750 and VAX-11780 */
- /* (read-only text sections) */
-#define U370WRMAGIC 0530 /* IBM 370 (writable text sections) */
-#define AMDWRMAGIC 0531 /* Amdahl 470/580 writable text sections */
-#define AMDROMAGIC 0534 /* Amdahl 470/580 read only sharable text */
-#define U370ROMAGIC 0535 /* IBM 370 (read-only sharable text sections) */
-
-#define SIPFBOMAGIC 0572 /* 29K Family (Byte 0 is MSB - Big Endian) */
-#define SIPRBOMAGIC 0573 /* 29K Family (Byte 0 is LSB - Little Endian) */
-
-/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
-/*
-** File header flags currently known to us.
-**
-** Am29000 will use the F_AR32WR and F_AR32W flags to indicate
-** the byte ordering in the file.
-*/
-
-#define F_RELFLG 00001 /* Relocation information stripped */
- /* from the file. */
-#define F_EXEC 00002 /* File is executable (i.e. no */
- /* unresolved external references). */
-#define F_LNNO 00004 /* Line numbers stripped from */
- /* the file. */
-#define F_LSYMS 00010 /* Local symbols stripped from */
- /* the file. */
-#define F_MINMAL 00020 /* Not used by UNIX. */
-#define F_UPDATE 00040 /* Not used by UNIX. */
-#define F_SWABD 00100 /* Not used by UNIX. */
-#define F_AR16WR 00200 /* File has the byte ordering used */
- /* by the PDP*-11/70 processor. */
-#define F_AR32WR 00400 /* File has 32 bits per word, */
- /* least significant byte first. */
-#define F_AR32W 01000 /* File has 32 bits per word, */
- /* most significant byte first. */
-#define F_PATCH 02000 /* Not used by UNIX. */
-#define F_BM32BRST 0010000 /* 32100 required; has RESTORE work-around. */
-#define F_BM32B 0020000 /* 32100 required. */
-#define F_BM32MAU 0040000 /* MAU required. */
-#define F_BM32ID 0160000 /* WE 32000 processor ID field. */
-
-/*--------------------------------------------------------------*/
-
-/*
-** Optional (a.out) header
-*/
-
-typedef struct aouthdr
-{
- short magic; /* magic number */
- short vstamp; /* version stamp */
- long tsize; /* size of .text in bytes */
- long dsize; /* size of .data (initialized data) */
- long bsize; /* size of .bss (uninitialized data) */
- long entry; /* entry point */
- long text_start; /* base of text used for this file */
- long data_start; /* base of data used for this file */
-} AOUTHDR;
-
-/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
-/*
-** Magic a.out header numbers for cross development (non-UNIX),
-** support of separate I and D address spaces.
-*/
-
-#define SASMAGIC 010000 /* Single Address Space */
-#define MASMAGIC 020000 /* Multiple (separate I & D) Address Spaces */
-
-/*--------------------------------------------------------------*/
-
-/*
-** Section header and related definitions
-*/
-
-struct scnhdr
-{
- char s_name[8]; /* section name */
- long s_paddr; /* physical address */
- long s_vaddr; /* virtual address */
- long s_size; /* section size */
- 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 */
- unsigned short s_nreloc; /* number of relocation entries */
- unsigned short s_nlnno; /* number of line number entries */
- long s_flags; /* flags */
-};
-
-#define SCNHDR struct scnhdr
-#define SCNHSZ sizeof (SCNHDR)
-
-/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
-/*
-** Section types - with additional section type for global
-** registers which will be relocatable for the Am29000.
-**
-** In instances where it is necessary for a linker to produce an
-** output file which contains text or data not based at virtual
-** address 0, e.g. for a ROM, then the linker should accept
-** address base information as command input and use PAD sections
-** to skip over unused addresses.
-*/
-
-#define STYP_REG 0x00 /* Regular section (allocated, */
- /* relocated, loaded) */
-#define STYP_DSECT 0x01 /* Dummy section (not allocated, */
- /* relocated, not loaded) */
-#define STYP_NOLOAD 0x02 /* Noload section (allocated, */
- /* relocated, not loaded) */
-#define STYP_GROUP 0x04 /* Grouped section (formed from */
- /* input sections) */
-#define STYP_PAD 0x08 /* Padded section (not allocated, */
- /* not relocated, loaded) */
-#define STYP_COPY 0x10 /* Copy section (for a decision */
- /* function used in updating fields; */
- /* not allocated, not relocated, */
- /* loaded, relocation and line */
- /* number entries processed */
- /* normally) */
-#define STYP_TEXT 0x20 /* Section contains executable text */
-#define STYP_DATA 0x40 /* Section contains initialized data */
-#define STYP_BSS 0x80 /* Section contains only uninitialized data */
-#define STYP_INFO 0x200 /* Comment section (not allocated, */
- /* not relocated, not loaded) */
-#define STYP_OVER 0x400 /* Overlay section (relocated, */
- /* not allocated, not loaded) */
-#define STYP_LIB 0x800 /* For .lib section (like STYP_INFO) */
-
-#define STYP_BSSREG 0x1200 /* Global register area (like STYP_INFO) */
-#define STYP_ENVIR 0x2200 /* Environment (like STYP_INFO) */
-#define STYP_ABS 0x4000 /* Absolute (allocated, not reloc, loaded) */
-#define STYP_LIT 0x8020 /* Literal data (like STYP_TEXT) */
-
-/*
-NOTE: The use of STYP_BSSREG for relocation is not yet defined.
-*/
-
-/*--------------------------------------------------------------*/
-
-/*
-** Relocation information declaration and related definitions
-*/
-
-struct reloc
-{
- long r_vaddr; /* (virtual) address of reference */
- long r_symndx; /* index into symbol table */
- unsigned short r_type; /* relocation type */
-};
-
-#define RELOC struct reloc
-#define RELSZ 10 /* sizeof (RELOC) */
-
-/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
-/*
-** Relocation types for the Am29000
-*/
-
-#define R_ABS 0 /* reference is absolute */
-
-#define R_IREL 030 /* instruction relative (jmp/call) */
-#define R_IABS 031 /* instruction absolute (jmp/call) */
-#define R_ILOHALF 032 /* instruction low half (const) */
-#define R_IHIHALF 033 /* instruction high half (consth) part 1 */
-#define R_IHCONST 034 /* instruction high half (consth) part 2 */
- /* constant offset of R_IHIHALF relocation */
-#define R_BYTE 035 /* relocatable byte value */
-#define R_HWORD 036 /* relocatable halfword value */
-#define R_WORD 037 /* relocatable word value */
-
-#define R_IGLBLRC 040 /* instruction global register RC */
-#define R_IGLBLRA 041 /* instruction global register RA */
-#define R_IGLBLRB 042 /* instruction global register RB */
-
-/*
-NOTE:
-All the "I" forms refer to Am29000 instruction formats. The linker is
-expected to know how the numeric information is split and/or aligned
-within the instruction word(s). R_BYTE works for instructions, too.
-
-If the parameter to a CONSTH instruction is a relocatable type, two
-relocation records are written. The first has an r_type of R_IHIHALF
-(33 octal) and a normal r_vaddr and r_symndx. The second relocation
-record has an r_type of R_IHCONST (34 octal), a normal r_vaddr (which
-is redundant), and an r_symndx containing the 32-bit constant offset
-to the relocation instead of the actual symbol table index. This
-second record is always written, even if the constant offset is zero.
-The constant fields of the instruction are set to zero.
-*/
-
-/*--------------------------------------------------------------*/
-
-/*
-** Line number entry declaration and related definitions
-*/
-
-struct lineno
-{
- union
- {
- long l_symndx; /* sym table index of function name */
- long l_paddr; /* (physical) address of line number */
- } l_addr;
- unsigned short l_lnno; /* line number */
-};
-
-#define LINENO struct lineno
-#define LINESZ 6 /* sizeof (LINENO) */
-
-/*--------------------------------------------------------------*/
-
-/*
-** Symbol entry declaration and related definitions
-*/
-
-#define SYMNMLEN 8 /* Number of characters in a symbol name */
-
-struct syment
-{
- union
- {
- char _n_name [SYMNMLEN]; /* symbol name */
- struct
- {
- long _n_zeroes; /* symbol name */
- long _n_offset; /* offset into string table */
- } _n_n;
- char *_n_nptr[2]; /* allows for overlaying */
- } _n;
-#ifndef pdp11
- unsigned
-#endif
- long n_value; /* value of symbol */
- short n_scnum; /* section number */
- unsigned short n_type; /* type and derived type */
- char n_sclass; /* storage class */
- char n_numaux; /* number of aux entries */
-};
-
-#define n_name _n._n_name
-#define n_nptr _n._n_nptr[1]
-#define n_zeroes _n._n_n._n_zeroes
-#define n_offset _n._n_n._n_offset
-
-#define SYMENT struct syment
-#define SYMESZ 18
-
-/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
-/*
-** Storage class definitions - new classes for global registers.
-*/
-
-#define C_EFCN -1 /* physical end of a function */
-#define C_NULL 0 /* - */
-#define C_AUTO 1 /* automatic variable */
-#define C_EXT 2 /* external symbol */
-#define C_STAT 3 /* static */
-#define C_REG 4 /* (local) register variable */
-#define C_EXTDEF 5 /* external definition */
-#define C_LABEL 6 /* label */
-#define C_ULABEL 7 /* undefined label */
-#define C_MOS 8 /* member of structure */
-#define C_ARG 9 /* function argument */
-#define C_STRTAG 10 /* structure tag */
-#define C_MOU 11 /* member of union */
-#define C_UNTAG 12 /* union tag */
-#define C_TPDEF 13 /* type definition */
-#define C_UNSTATIC 14 /* uninitialized static */
-#define C_USTATIC 14 /* uninitialized static */
-#define C_ENTAG 15 /* enumeration tag */
-#define C_MOE 16 /* member of enumeration */
-#define C_REGPARM 17 /* register parameter */
-#define C_FIELD 18 /* bit field */
-
-#define C_GLBLREG 19 /* global register */
-#define C_EXTREG 20 /* external global register */
-#define C_DEFREG 21 /* ext. def. of global register */
-#define C_STARTOF 22 /* as29 $SIZEOF and $STARTOF symbols */
-
-
-#define C_BLOCK 100 /* beginning and end of block */
-#define C_FCN 101 /* beginning and end of function */
-#define C_EOS 102 /* end of structure */
-#define C_FILE 103 /* file name */
-#define C_LINE 104 /* used only by utility programs */
-#define C_ALIAS 105 /* duplicated tag */
-#define C_HIDDEN 106 /* like static, used to avoid name */
- /* conflicts */
-#define C_SHADOW 107 /* shadow symbol */
-
-/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
-/*
-** Special section number definitions used in symbol entries.
-** (Section numbers 1-65535 are used to indicate the section
-** where the symbol was defined.)
-*/
-
-#define N_DEBUG -2 /* special symbolic debugging symbol */
-#define N_ABS -1 /* absolute symbol */
-#define N_UNDEF 0 /* undefined external symbol */
-#define N_SCNUM 1-65535 /* section num where symbol defined */
-
-/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
-/*
-** Fundamental symbol types.
-*/
-
-#define T_NULL 0 /* type not assigned */
-#define T_VOID 1 /* void */
-#define T_CHAR 2 /* character */
-#define T_SHORT 3 /* short integer */
-#define T_INT 4 /* integer */
-#define T_LONG 5 /* long integer */
-#define T_FLOAT 6 /* floating point */
-#define T_DOUBLE 7 /* double word */
-#define T_STRUCT 8 /* structure */
-#define T_UNION 9 /* union */
-#define T_ENUM 10 /* enumeration */
-#define T_MOE 11 /* member of enumeration */
-#define T_UCHAR 12 /* unsigned character */
-#define T_USHORT 13 /* unsigned short */
-#define T_UINT 14 /* unsigned integer */
-#define T_ULONG 15 /* unsigned long */
-
-/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
-
-/*
-** Derived symbol types.
-*/
-
-#define DT_NON 0 /* no derived type */
-#define DT_PTR 1 /* pointer */
-#define DT_FCN 2 /* function */
-#define DT_ARY 3 /* array */
-
-/*--------------------------------------------------------------*/
-
-/*
-** Auxiliary symbol table entry declaration and related
-** definitions.
-*/
-
-#define FILNMLEN 14 /* Number of characters in a file name */
-#define DIMNUM 4 /* Number of array dimensions in auxiliary entry */
-
-union auxent
-{
- struct
- {
- long x_tagndx; /* str, un, or enum tag indx */
- union
- {
- struct
- {
- unsigned short x_lnno; /* declaration line number */
- unsigned short x_size; /* str, union, array size */
- } x_lnsz;
- long x_size; /* size of functions */
- } x_misc;
- union
- {
- struct /* if ISFCN, tag, or .bb */
- {
- long x_lnnoptr; /* ptr to fcn line # */
- long x_endndx; /* entry ndx past block end */
- } x_fcn;
- struct /* if ISARY, up to 4 dimen */
- {
- unsigned short x_dimen[DIMNUM];
- } x_ary;
- } x_fcnary;
- unsigned short x_tvndx; /* tv index */
- } x_sym;
- struct
- {
- char x_fname[FILNMLEN];
- } x_file;
- struct
- {
- long x_scnlen; /* section length */
- unsigned short x_nreloc; /* number of relocation entries */
- unsigned short x_nlinno; /* number of line numbers */
- } x_scn;
- struct
- {
- long x_tvfill; /* tv fill value */
- unsigned short x_tvlen; /* length of tv */
- unsigned short x_tvrna[2]; /* tv range */
- } x_tv; /* info about tv section (in auxent of symbol tv)) */
-};
-
-#define AUXENT union auxent
-#define AUXESZ 18 /* sizeof(AUXENT) */
-
-</pre></div></body></html>