home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / uccs / root.14 / udk / usr / include / filehdr.h < prev    next >
C/C++ Source or Header  |  1998-08-19  |  6KB  |  189 lines

  1. /*
  2.  * Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  3.  *                                                                         
  4.  *        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  5.  *                   SANTA CRUZ OPERATION INC.                             
  6.  *                                                                         
  7.  *   The copyright notice above does not evidence any actual or intended   
  8.  *   publication of such source code.                                      
  9.  */
  10.  
  11. #ident    "@(#)sgs-head:i386/head/filehdr.h    1.25"
  12.  
  13. #ifndef _FILEHDR_H
  14. #define _FILEHDR_H
  15.  
  16. struct filehdr {
  17.     unsigned short    f_magic;    /* magic number */
  18.     unsigned short    f_nscns;    /* number of sections */
  19.     long        f_timdat;    /* time & date stamp */
  20.     long        f_symptr;    /* file pointer to symtab */
  21.     long        f_nsyms;    /* number of symtab entries */
  22.     unsigned short    f_opthdr;    /* sizeof(optional hdr) */
  23.     unsigned short    f_flags;    /* flags */
  24.     };
  25.  
  26. /*
  27.  *   Bits for f_flags:
  28.  *
  29.  *    F_RELFLG    relocation info stripped from file
  30.  *    F_EXEC        file is executable  (i.e. no unresolved
  31.  *                externel references)
  32.  *    F_LNNO        line nunbers stripped from file
  33.  *    F_LSYMS        local symbols stripped from file
  34.  *    F_MINMAL    this is a minimal object file (".m") output of fextract
  35.  *    F_UPDATE    this is a fully bound update file, output of ogen
  36.  *    F_SWABD        this file has had its bytes swabbed (in names)
  37.  *    F_AR16WR    this file has the byte ordering of an AR16WR (e.g. 11/70) machine
  38.  *                (it was created there, or was produced by conv)
  39.  *    F_AR32W        this file has the byte ordering of an AR32W machine (e.g. 3b,maxi)
  40.  *    F_PATCH        file contains "patch" list in optional header
  41.  *    F_NODF        (minimal file only) no decision functions for
  42.  *                replaced functions
  43.  */
  44.  
  45. #define  F_RELFLG    0000001
  46. #define  F_EXEC        0000002
  47. #define  F_LNNO        0000004
  48. #define  F_LSYMS    0000010
  49. #define  F_MINMAL    0000020
  50. #define  F_UPDATE    0000040
  51. #define  F_SWABD    0000100
  52. #define  F_AR16WR    0000200
  53. #define  F_AR32WR    0000400
  54. #define  F_AR32W    0001000
  55. #define  F_PATCH    0002000
  56. #define  F_NODF        0002000
  57.  
  58. /*
  59.  *    BELLMAC-32    Identification field
  60.  *    F_BM32B        file contains BM32B code (as opposed to strictly BM32A)
  61.  *    F_BM32MAU    file requires MAU (math arith unit) to execute
  62.  */
  63.  
  64. #define    F_BM32ID    0160000
  65. #define    F_BM32MAU    0040000
  66. #define F_BM32B         0020000
  67.  
  68. /*    F_BM32RST    file has RESTORE work-around    */
  69.  
  70. #define F_BM32RST    0010000
  71.  
  72. /*
  73.  *    Flags for the INTEL chips.  If the magic number of the object file
  74.  *    is IAPX16 or IAPX16TV or IAPX20 or IAPX20TV then if F_80186
  75.  *    is set, there are some 80186 instructions in the code, and hence
  76.  *    and 80186 or 80286 chip must be used to run the code.
  77.  *    If F_80286 is set, then the code has to be run on an 80286 chip.
  78.  *    And if neither are set, then the code can run on an 8086, 80186, or
  79.  *    80286 chip.
  80.  *    
  81.  */
  82.  
  83. #define F_80186        010000
  84. #define F_80286        020000
  85.  
  86. /*
  87.  *   Magic Numbers
  88.  */
  89.  
  90.     /* iAPX - the stack frame and return registers differ from
  91.      *       Basic-16 and x86 C compilers, hence new magic numbers
  92.      *      are required.  These are cross compilers.
  93.      */
  94.  
  95.     /* Intel */
  96. #define  IAPX16        0504
  97. #define  IAPX16TV    0505
  98. #define  IAPX20        0506
  99. #define  IAPX20TV    0507
  100. /* 0514, 0516 and 0517 reserved for Intel */
  101.  
  102.     /* Basic-16 */
  103.  
  104. #define  B16MAGIC    0502
  105. #define  BTVMAGIC    0503
  106.  
  107.  
  108.     /* x86 */
  109.  
  110. #define  X86MAGIC    0510
  111. #define  XTVMAGIC    0511
  112.  
  113.     /* Intel 286 */
  114. #define I286SMAGIC    0512
  115. #define I286LMAGIC    0522    /* used by mc68000 (UNIX PC) and iAPX 286 */
  116.  
  117.     /* Intel 386 */
  118.  
  119. #define  I386MAGIC      0514
  120.  
  121.  
  122.     /* n3b */
  123. /*
  124.  *   NOTE:   For New 3B, the old values of magic numbers
  125.  *        will be in the optional header in the structure
  126.  *        "aouthdr" (identical to old 3B aouthdr).
  127.  */
  128. #define  N3BMAGIC    0550    /* 3B20 executable, no TV */
  129. #define  NTVMAGIC    0551    /* 3B20 executable with TV */
  130.  
  131.     /*  MAC-32, 3B15, 3B5  */
  132.  
  133. #define  WE32MAGIC    0560    /* WE 32000, no TV */
  134. #define  FBOMAGIC    0560    /* WE 32000, no TV */
  135. #define  RBOMAGIC    0562    /* reserved for WE 32000 */
  136. #define  MTVMAGIC    0561    /* WE 32000 with TV */
  137.  
  138.     /* VAX 11/780 and VAX 11/750 */
  139.  
  140.             /* writeable text segments */
  141. #define VAXWRMAGIC    0570
  142.             /* readonly sharable text segments */
  143. #define VAXROMAGIC    0575
  144.  
  145.     /* Motorola 68020/68030/68040 */
  146. #define    MC68MAGIC    MC68MAGICV4
  147. #define    MC68MAGICV4    03146    /* AT&T UNIX System V/68 4.0 */
  148.                 /* (UniSoft COFF binaries)    */
  149. #define    MC68MAGICV3    0554    /* UniSoft UNIX System V/68 3.2 */
  150.   
  151.     /* Motorola 88000 */
  152. #define MC88MAGIC    0555    /* M88000 normal file */
  153.  
  154.     /* IBM 370 */
  155. #define    U370WRMAGIC    0530    /* writeble text segments    */
  156. #define    U370ROMAGIC    0535    /* readonly sharable text segments    */
  157. /* 0532 and 0533 reserved for u370 */
  158.  
  159.     /* Amdahl 470/580 */
  160. #define AMDWRMAGIC    0531    /* writable text segments */
  161. #define AMDROMAGIC    0534    /* readonly sharable text segments */
  162.  
  163.     /* NSC */
  164. /* 0524 and 0525 reserved for NSC */
  165.  
  166.     /* Zilog */
  167. /* 0544 and 0545 reserved for Zilog */
  168.     /* i860 */
  169. #define    I860MAGIC    0515
  170.  
  171. #define    FILHDR    struct filehdr
  172. #define    FILHSZ    sizeof(FILHDR)
  173.  
  174. #define ISCOFF(x) \
  175.         (((x)==B16MAGIC) || ((x)==BTVMAGIC) || ((x)==X86MAGIC) \
  176.         || ((x)==XTVMAGIC) || ((x)==N3BMAGIC) || ((x)==NTVMAGIC) \
  177.         || ((x)==FBOMAGIC) || ((x)==VAXROMAGIC) || ((x)==VAXWRMAGIC) \
  178.         || ((x)==RBOMAGIC) || ((x)==MC68MAGICV3) \
  179.         || ((x)==MC68MAGICV4) || ((x)==MC88MAGIC) \
  180.         || ((x)==IAPX16) || ((x)==IAPX16TV) \
  181.         || ((x)==IAPX20) || ((x)==IAPX20TV) \
  182.         || ((x)==AMDWRMAGIC) || ((x)==AMDROMAGIC) \
  183.         || ((x)==U370WRMAGIC) || ((x)==U370ROMAGIC) || ((x)==MTVMAGIC) \
  184.         || ((x)==I286SMAGIC) || ((x)==I286LMAGIC) \
  185.         || ((x)==I860MAGIC) \
  186.         || ((x)==I386MAGIC)) 
  187.  
  188. #endif     /* _FILEHDR_H */
  189.