home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume22 / omfdump / part01 / xenixomf.h < prev   
Encoding:
C/C++ Source or Header  |  1991-08-31  |  5.6 KB  |  150 lines

  1.  
  2. /* Defines to map a.out definitions to OMF style definitions
  3.  */
  4. #define    PUBLICDATA    (N_DATA|N_EXT)
  5. #define    PUBLICTEXT    (N_TEXT|N_EXT)
  6. #define COMMDEF(x)    ((x) == (N_UNDF|N_EXT))
  7. #define PRIVDATA    (N_DATA)
  8. #define PRIVTEXT    (N_TEXT)
  9. #define PRIVBSS        (N_BSS)
  10. #define EXTERNAL    (N_UNDF)
  11. #define    PUBLIC(x)    ((x)==PUBLICDATA || (x)==PUBLICTEXT)
  12. #define    EXTDEF(x)    ((x)==EXTERNAL || COMMDEF(x))
  13. #define PRIVATE(x)    ((x)==PRIVDATA || (x)==PRIVTEXT || (x)==PRIVBSS)
  14.  
  15.  
  16. #define MTHEADR        0x80    /* module header */
  17. #define MCOMENT        0x88    /* comment */
  18. #define MMODEND        0x8a    /* module end */
  19. #define M386END        0x8b    /* 32 bit module end */
  20. #define MEXTDEF        0x8c    /* external definition */
  21. #define MTYPDEF        0x8e    /* type definition */
  22. #define MPUBDEF        0x90    /* public definition */
  23. #define MPUB386        0x91    /* 32 bit public definition */
  24. #define MLINNUM        0x94    /* source line number */
  25. #define MLIN386        0x95    /* 32 bit source line number */
  26. #define MLNAMES        0x96    /* name list */
  27. #define MSEGDEF        0x98    /* segment definition */
  28. #define MSEG386        0x99    /* 32 bit segment definition */
  29. #define MGRPDEF        0x9a    /* group definition */
  30. #define MFIXUPP        0x9c    /* fix up previous data image */
  31. #define MFIX386        0x9d    /* fix up previous 32 bit data image */
  32. #define MLEDATA        0xa0    /* logical data image */
  33. #define MLED386        0xa1    /* 32 bit logical data image */
  34. #define    MCOMDEF        0xb0    /* communal names definition */
  35. #define MLOCEXD        0xb4    /* external definition vis within module only */
  36. #define MFLCEXD        0xb5    /* func ext definition vis within module only */
  37. #define MLOCPUB        0xb6    /* public definition vis within module only */
  38. #define MLPB386        0xb7    /* 32 bit public visible within module only */
  39. #define    MLOCCOM        0xb8    /* communal name visible within module only */
  40.  
  41. #define MLOCSYM        0x92    /* local symbols */
  42. #define MLOC386        0x93    /* 32 bit local symbols */
  43. #define MLIDATA        0xa2    /* logical repeated (iterated) data image */
  44. #define MLID386        0xa3    /* 32 bit logical repeated (iter) data image */
  45.  
  46. /* The maximum length of an identifier.
  47.  */
  48.  
  49. #define OMFNAMELENGTH    127
  50.  
  51. /* alignment required
  52.  */
  53.  
  54. #define SD_ABS        0x00        /* absolute */
  55. #define SD_BYTE        0x20        /* byte */
  56. #define SD_WORD        0x40        /* word */
  57. #define SD_PARA        0x60        /* paragraph */
  58. #define SD_PAGE        0x80        /* page */
  59. #define SD_DWORD    0xa0        /* double word */
  60. #define SD_LTL        0xc0        /* load-time locatable */
  61. #define SD_ALIGN    0xe0        /* alignment mask */
  62. #define SD_ASHIFT    5        /* alignment shift */
  63.  
  64. /* segment combine classes */
  65.  
  66. #define SD_PRIV        0x00        /* private, can't be combined */
  67. #define SD_HCOMM    0x04        /* common, place in high mem */
  68. #define SD_PUBLIC    0x08        /* public, sequential */
  69. #define SD_BAD        0x0c        /* undefined */
  70. #define SD_C4        0x10        /* not used */
  71. #define SD_STACK    0x14        /* stack segment */
  72. #define SD_COMM        0x18        /* common segment */
  73. #define SD_RCOMM    0x1c        /* not used, reverse common segment */
  74. #define SD_COMBO    0x1c        /* combine mask */
  75. #define SD_CSHIFT    2        /* combine shift */
  76. #define SD_PGRES    0x01        /* page resident */
  77. #define SD_64K        0x02        /* segment size is exactly 64k */
  78.  
  79. /* BSSDEF record definitions
  80.  */
  81.  
  82. #define    TD_CNEAR    0x62        /* near .comm variable */
  83. #define    TD_CFAR        0x61        /* far .comm variable */
  84.  
  85. /* COMENT record definitions
  86.  */
  87.  
  88. #define     CMT_PURGE    0x80        /* comment can be purged */
  89. #define  CMT_LIST    0x40        /* don't list when listing comments */
  90.  
  91. /* FIXUP record definitions
  92.  */
  93.  
  94. #define  FIX_FIXUP    0x80        /* fixup is a fixup (else thread def) */
  95. #define  TRD_FRAME    0x40        /* thread def for a frame (else tgt) */
  96. #define  TRD_MTHDSHFT    2        /* frame / target method shift */
  97. #define  TRD_MTHDMSK    0x1c        /* frame / target method mask */
  98. #define  TRD_THRED    0x03        /* thread number mask */
  99.  
  100. /* Target method defines.  0 - 3 are primary, they include an offset, while 
  101.  * 4 - 7 or secondary, the offset 0 and not specified.
  102.  */
  103.  
  104. #define  TGT_SI        0        /* target is Segment Index(N) + M */
  105. #define  TGT_GI        1        /* target is Group Index(N) + M */
  106. #define  TGT_EI        2        /* target is External Index(N) + M */
  107. #define  TGT_ABS    3        /* target is absolute frame N + N */
  108. #define  TGT_SI_0    4        /* target is Segment Index(N) + 0 */
  109. #define  TGT_GI_0    5        /* target is Group Index(N) + 0 */
  110. #define  TGT_EI_0    6        /* target is External Index(N) + 0 */
  111. #define  TGT_ABS_0    7        /* target is Absolute Segmnent N + 0 */
  112.  
  113. /* Frame fixup method
  114.  */
  115.  
  116. #define  FRM_SI        0        /* Frame is Segment index(N) */
  117. #define  FRM_GI        1        /* Frame is Group index(N) */
  118. #define  FRM_EI        2        /* Frame is External index(N) */
  119. #define  FRM_ABS    3        /* Frame is Absolute frame(N) */
  120. #define  FRM_LOC    4        /* Frame is LSEG of LOCATION */
  121. #define  FRM_TRGT    5        /* Frame is the frame of the target */
  122.  
  123. /* FIXUP fixdat field definitions
  124.  */
  125.  
  126. #define  FIX_SEG    0x4000        /* Fixup is seg relative (else self) */
  127. #define  FIX_24BIT    0x2000        /* Fixup has 24b tgt disp (NOT USED) */
  128. #define  FIX_LOCMSK    0x3c00        /* Fixup location type mask */
  129. #define  FIX_LOCSHFT    10        /* Fixup location type shift */
  130. #define  FIX_DATAOFF    0x3ff        /* location in prev data rec of fixup */
  131. #define  FIXDAT_FTHRD    0x80        /* Fixup frame by thread else direct */
  132. #define  FIXDAT_FRAME    0x70        /* Frame thread or method mask */
  133. #define  FIXDAT_FRSHFT    4        /* Frame thread or method shift */
  134. #define  FIXDAT_TTHRD    0x08        /* Fixup target by thread else direct */
  135. #define  FIXDAT_TSCND    0x04        /* Primary or secondary target method */
  136. #define  FIXDAT_TRGT    0x03        /* Target thread or method mask */
  137.  
  138. /* Location type definitions
  139.  */
  140.  
  141. #define  LOC_LOBYTE    0        /* low 8 bits */
  142. #define  LOC_OFFSET    1        /* 16 bit offset */
  143. #define  LOC_BASE    2        /* 16 bit frame number */
  144. #define  LOC_POINTER    3        /* 32 bit pointer */
  145. #define  LOC_HIBTE    4        /* second 8 bits */
  146. #define  LOC_OFFSETL    5        /* 16 bit offset (liner resolved) */
  147. #define  LOC_OFFSET32    9        /* 32 bit offset */
  148. #define  LOC_POINTER48    11        /* 48 bit pointer */
  149. #define  LOC_OFFSETL32    13        /* 32 bit offset (liner resolved) */
  150.