som_coff.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:21k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* som_coff.h - HP-PA a.out object module header */
  2. /* Copyright 1993 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. -------------------
  6. 01a,10sep93,yao  written.
  7. */
  8. #ifndef INCsom_coffh
  9. #define INCsom_coffh
  10. /*
  11.  * VxWorks values for n_type.
  12.  */
  13. #define N_UNDF  0x0             /* undefined */
  14. #define N_ABS   0x2             /* absolute */
  15. #define N_TEXT  0x4             /* text */
  16. #define N_DATA  0x6             /* data */
  17. #define N_BSS   0x8             /* bss */
  18. #define N_COMM  0x12            /* common (internal to ld) */
  19. #define N_FN    0x1f            /* file name symbol */
  20. #define N_EXT   01              /* external bit, or'ed in */
  21. #define N_TYPE  0x1e            /* mask for all the type bits */
  22. #define N_STAB  0xe0            /* if any of these bits set, a SDB entry */
  23. struct sys_clock {
  24.     unsigned int secs;
  25.     unsigned int nanosecs;
  26.     };
  27. union name_pt {
  28.    char *n_name;
  29.    unsigned int  n_strx;
  30.    };
  31. typedef struct unwind_table_entry {
  32.    unsigned int startAddr; /* word 1 */
  33.    unsigned int endAddr; /* word 2 */
  34.    unsigned int cantUnwind:1;           /* word 3 */
  35.    unsigned int millicode:1;
  36.    unsigned int millicode_save_sr0:1;
  37.    unsigned int regionDescriptor:2;
  38.    unsigned int bunk:22;
  39.    unsigned int saveSP:1;
  40.    unsigned int saveRP:1;
  41.    unsigned int saveMRP:1;
  42.    unsigned int reserved3:1;
  43.    unsigned int cleanupDefined:1;
  44.    unsigned int interruptMarker:2; /* word 4 */
  45.    unsigned int largeFrame:1;
  46.    unsigned int reserved4:2;
  47.    unsigned int frameSize:27;
  48.    } UNWIND_ENTRY;
  49. #define UNWIND_DISCONTINUOUS    3
  50. #define UNWIND_NORMAL           0
  51. #define symbol_name name.n_name
  52. #define subspace_name name.n_name
  53. #define space_name name.n_name
  54. typedef struct header {
  55.     short int system_id; /* system id */
  56.     short int a_magic; /* magic number */
  57.     unsigned int version_id; /* format version */
  58.     struct sys_clock file_time; /* timestamp */
  59.     unsigned int entry_space; /* reserved */
  60.     unsigned int entry_subspace; /* reserved */
  61.     unsigned int entry_offset; /* reserved */
  62.     unsigned int aux_header_location; /* file ptr to aux hdrs */
  63.     unsigned int aux_header_size; /* size of aux hdrs */
  64.     unsigned int som_length; /* length of object module */
  65.     unsigned int presumed_dp; /* reserved */
  66.     unsigned int space_location; /* file ptr to space dict */
  67.     unsigned int space_total; /* number of spaces */
  68.     unsigned int subspace_location; /* file ptr to subspace dict */
  69.     unsigned int subspace_total; /* number of subspaces */
  70.     unsigned int loader_fixup_location; /* reserved */
  71.     unsigned int loader_fixup_total; /* reserved */
  72.     unsigned int space_strings_location; /* file ptr to space strings */
  73.     unsigned int space_strings_size; /* size of space strings */
  74.     unsigned int init_array_location; /* reserved */
  75.     unsigned int init_array_total; /* reserved */
  76.     unsigned int compiler_location; /* file ptr to compiler records */
  77.     unsigned int compiler_total; /* number of compiler records */
  78.     unsigned int symbol_location; /* file ptr to symbol table */
  79.     unsigned int symbol_total; /* number of symbols */
  80.     unsigned int fixup_request_location;/* file ptr to fixups */
  81.     unsigned int fixup_request_total; /* number of fixups */
  82.     unsigned int symbol_strings_location;/* file ptr to symbol strings */
  83.     unsigned int symbol_strings_size; /* size of to symbol strings */
  84.     unsigned int unloadable_sp_location;/* file ptr to debug info */
  85.     unsigned int unloadable_sp_size; /* size of to debug info */
  86.     unsigned int checksum; /* header checksum */
  87.     } SOM_HDR;
  88. struct aux_id {
  89.     unsigned int mandatory : 1; /* reserved */
  90.     unsigned int copy : 1; /* reserved */
  91.     unsigned int append : 1; /* reserved */
  92.     unsigned int ignore : 1; /* reserved */
  93.     unsigned int reserved : 12; /* reserved */
  94.     unsigned int type : 16; /* reserved */
  95.     unsigned int length;       /* reserved */
  96.     };
  97. /* values for magic number */
  98. #define RELOC_MAGIC     0x106 /* relocatable only */
  99. #define EXEC_MAGIC      0x107 /* normal executable */
  100. #define SHARE_MAGIC     0x108 /* shared executable */
  101. /* values for new and old versions */
  102. #define VERSION_ID      85082112
  103. #define NEW_VERSION_ID  87102412        /* relocatable with new fixups */
  104. /* values for the aux_id.type field */
  105. #define HPUX_AUX_ID 4
  106. #define VERSION_AUX_ID 6
  107. #define COPYRIGHT_AUX_ID 10
  108. typedef struct som_exec_auxhdr { /* HP-UX auxiliary header */
  109.     struct aux_id som_auxhdr; /* aux header id */
  110.     long exec_tsize; /* text size */
  111.     long exec_tmem; /* start address of text */
  112.     long exec_tfile; /* file ptr to text */
  113.     long exec_dsize; /* data size */
  114.     long exec_dmem; /* start address of data size */
  115.     long exec_dfile; /* file ptr to data */
  116.     long exec_bsize; /* bss size */
  117.     long exec_entry; /* address of entry point */
  118.     long exec_flags; /* loader flags */
  119.     long exec_bfill; /* bss initialization value */
  120.     } AUX_HDR;
  121. /* values for exec_flags */
  122. #define TRAP_NIL_PTRS 01
  123. struct user_string_aux_hdr { /* version string auxiliary header */
  124.     struct aux_id header_id; /* aux header id */
  125.     unsigned int string_length; /* strlen(user_string) */
  126.     char user_string[1]; /* user-defined string */
  127.     };
  128. struct copyright_aux_hdr { /* copyright string auxiliary header */
  129.     struct aux_id header_id; /* aux header id */
  130.     unsigned int string_length; /* strlen(user_string) */
  131.     char user_string[1]; /* user-defined string */
  132.     };
  133. /* space dictionary from scnhdr.h */
  134. typedef struct space_dictionary_record {
  135.     union name_pt name; /* index to space name */
  136.     unsigned int is_loadable: 1;/* space is loadable */
  137.     unsigned int is_defined: 1; /* space is defined within file */
  138.     unsigned int is_private: 1; /* space is not sharable */
  139.     unsigned int reserved: 13;  /* space is not sharable */
  140.     unsigned int sort_key: 8;  /* sort key for space */
  141.     unsigned int reserved2: 8;  /* reserved */
  142.     int          space_number; /* space index */
  143.     int          subspace_index;/* subspace index */
  144.     unsigned int subspace_quantity;/* number of subspaces in space */
  145.     int          loader_fix_index;/* reserved */
  146.     int          loader_fix_quantity;/* reserved */
  147.     int          int_pointer_index;/* reserved */
  148.     int          int_pointer_quantity;/* reserved */
  149.     } SPACE;
  150. typedef struct subspace_dictionary_record {
  151.     int             space_index;
  152.     unsigned int    access_control_bits: 7; /* access for PDIR entries */
  153.     unsigned int    memory_resident    : 1; /* lock in memory */        
  154.     unsigned int    dup_common         : 1; /* data name clashes allowed  */    
  155.     unsigned int    is_common          : 1; /* subspace is a common block */   
  156.     unsigned int    is_loadable        : 1;
  157.     unsigned int    quadrant           : 2; /* quadrant request */        
  158.     unsigned int    initially_frozen   : 1; /* must be locked into memory
  159.        when OS is booted */
  160.     unsigned int    is_first           : 1; /* must be first subspace */
  161.     unsigned int    code_only          : 1; /* must contain only code */
  162.     unsigned int    sort_key           : 8; /* subspace sort key */
  163.     unsigned int    replicate_init     : 1; /* init values replicated to 
  164.        fill subspace_length */
  165.     unsigned int    continuation       : 1; /* subspace is a continuation */
  166.     unsigned int    reserved           : 6;
  167.     int             file_loc_init_value;    /* file location or 
  168.        initialization value */
  169.     unsigned int    initialization_length;
  170.     unsigned int    subspace_start;         /* starting offset */
  171.     unsigned int    subspace_length;        /* number of bytes defined by 
  172.      * this subspace */        
  173.     unsigned int    reserved2          :16;   
  174.     unsigned int    alignment          :16; /* alignment required for the
  175.      * subspace (largest alignment 
  176.      * requested for any item in the 
  177.      * subspace) */
  178.     union name_pt   name;                   /* index of subspace name */
  179.     int             fixup_request_index;    /* index into fixup array */
  180.     unsigned int    fixup_request_quantity; /* number of fixup requests */
  181.     } SUBSPACE;
  182.     
  183. #define SBPSZ  sizeof(SUBSPACE)
  184. /*
  185.  * Define constants for names of spaces
  186.  */
  187. #define _SPACE_TEXT "$TEXT$"
  188. #define _SPACE_PRIVATE "$PRIVATE$"
  189. /* from syms.h */
  190. typedef struct symbol_dictionary_record {
  191.     unsigned int  hidden           : 1; /* reserved */
  192.     unsigned int  secondary_def    : 1; /* symbol type */
  193.     unsigned int  symbol_type      : 6; /* symbol type */
  194.     unsigned int  symbol_scope     : 4; /* symbol value */
  195.     unsigned int  check_level      : 3; /* type checking level */
  196.     unsigned int  must_qualify     : 1; /* qualifier required */
  197.     unsigned int  initially_frozen : 1; /* reserved */
  198.     unsigned int  memory_resident  : 1; /* reserved */
  199.     unsigned int  is_common        : 1; /* common block */
  200.     unsigned int  dup_common       : 1; /* COBOL-style common */
  201.     unsigned int  xleast           : 2; /* reserved */
  202.     unsigned int  arg_reloc        :10; /* parameter relocation bits */
  203.     union name_pt name; /* index to symbol name */
  204.     union name_pt qualifier_name;  /* index to qual name */
  205.     unsigned int  symbol_info; /* subspace index */
  206.     unsigned int  symbol_value; /* symbol value */
  207.     } SYMREC;
  208. #define n_nptr          name.n_name
  209. #define n_offset        name.n_strx
  210. #define q_nptr          qualifier_name.n_name
  211. #define q_offset        qualifier_name.n_strx
  212. /* values for symbol_type */
  213. #define    ST_NULL         0 /* unused symbol entry */
  214. #define    ST_ABSOLUTE     1 /* non-relocatable symbol */
  215. #define    ST_DATA         2 /* data symbol */
  216. #define    ST_CODE         3 /* generic code symbol */
  217. #define    ST_PRI_PROG     4 /* program entry point */
  218. #define    ST_SEC_PROG     5 /* secondary prog entry point */
  219. #define    ST_ENTRY        6 /* procedure entry point */
  220. #define    ST_STORAGE      7 /* storage request */
  221. #define    ST_STUB         8 /* reserved */
  222. #define    ST_MODULE       9 /* Pascal module name */
  223. #define    ST_SYM_EXT     10 /* symbol extension record */
  224. #define    ST_ARG_EXT     11 /* argument extension record */
  225. #define    ST_MILLICODE   12 /* millicode entry point */
  226. #define    ST_PLABEL      13 /* reserved */
  227. #define    ST_OCT_DIS     14 /* reserved */
  228. #define    ST_MILLI_EXT   15 /* reserved */
  229. /* symbol scopes */
  230. #define    SS_UNSAT        0 /* unsatisfied reference */
  231. #define    SS_EXTERNAL     1 /* reserved */
  232. #define    SS_LOCAL        2 /* local symbol */
  233. #define    SS_UNIVERSAL    3 /* global symbol */
  234. /* symbol extension records (for type checking) */
  235. union arg_descriptor {  
  236.     struct 
  237. unsigned int reserved  :3; /* not used */
  238. unsigned int packing   :1; /* reserved */
  239. unsigned int alignment :4; /* byte alignment */
  240. unsigned int mode      :4; /* not used */
  241. unsigned int structure :4; /* use of symbol */
  242. unsigned int hash      :1; /* structure of symbol */
  243. int arg_type           :15; /* set if arg_type is hashed */
  244. } arg_desc;
  245.     unsigned int    word;
  246.     };
  247. struct symbol_extension_record 
  248.     {
  249.     unsigned int          type         :8; /* always type SYM_EXT (12) for 
  250.     * this record */
  251.     unsigned int          max_num_args :8; /* max # of parameters */
  252.     unsigned int          min_num_args :8; /* min # of parameters */
  253.     unsigned int          num_args     :8; /* actual # of parameters  */
  254.     union arg_descriptor  symbol_desc;    /* first 3 parameters */
  255.     union arg_descriptor  argument_desc[3];
  256.     };
  257. struct argument_desc_array 
  258.     {
  259.     unsigned int            type    : 8; /* always type ARG_EXT (13) for 
  260.   * this record */
  261.     unsigned int            reserved: 24; /* not used */
  262.     union arg_descriptor    argument_desc[4]; /* nexet 4 parameters */
  263.     };
  264. #define SYMESZ  sizeof(SYMREC)
  265. #define AUXENT  struct symbol_extension_record
  266. #define AUXESZ  sizeof(AUXENT)
  267. /* relocation information */
  268. /*
  269.  * The following declarations are for relocation entries in new-format
  270.  * relocatable object files, produced by compilers on HP-UX Release 3.0
  271.  * and later.  A relocatable object file with this format will have
  272.  * a version number in the file header of NEW_VERSION_ID (see filehdr.h).
  273.  *
  274.  * Relocation entries are a stream of bytes; each subspace (see scnhdr.h)
  275.  * contains a byte offset from the beginning of the fixup table, and a
  276.  * length in bytes of the relocation entries for that subspace.
  277.  * The first byte of each relocation entry is the opcode as described
  278.  * below.  Entries can be from 1 to 12 (currently) bytes long, and
  279.  * describe 0, 1, or more words of data to be relocated.
  280.  */
  281. #define R_NO_RELOCATION   0x00 /* 00-1f:  n words, not relocatable */
  282. #define R_ZEROES          0x20 /* 20-21:  n words, all zero */
  283. #define R_UNINIT          0x22 /* 22-23:  n words, uninitialized */
  284. #define R_RELOCATION      0x24 /* 24:     1 word, relocatable data */
  285. #define R_DATA_ONE_SYMBOL 0x25 /* 25-26:  1 word, data external reference */
  286. #define R_DATA_PLABEL     0x27 /* 27-28:  1 word, data plabel reference */
  287. #define R_SPACE_REF       0x29 /* 29:     1 word, initialized space id */
  288. #define R_REPEATED_INIT   0x2a  /* 2a-2d:  n words, repeated pattern */
  289. /* 2e-2f:  reserved */
  290. #define R_PCREL_CALL      0x30 /* 30-3d:  1 word, pc-relative call */
  291. /* 3e-3f:  reserved */
  292. #define R_ABS_CALL        0x40 /* 40-4d:  1 word, absolute call */
  293. /* 4e-4f:  reserved */
  294. #define R_DP_RELATIVE     0x50 /* 50-72:  1 word, dp-relative load/store */
  295. /* 73-77:  reserved */
  296. #define R_DLT_REL         0x78 /* 78-79:  1 word, dlt-relative load/store */
  297. #define R_CODE_ONE_SYMBOL 0x80  /* 80-a2:  1 word, relocatable code */
  298. /* a3-ad:  reserved */
  299. #define R_MILLI_REL       0xae  /* ae-af:  1 word, millicode-relative branch */
  300. #define R_CODE_PLABEL     0xb0  /* b0-b1:  1 word, code plabel reference */
  301. #define R_BREAKPOINT      0xb2 /* b2:     1 word, statement breakpoint */
  302. #define R_ENTRY           0xb3 /* b3-b4:  procedure entry */
  303. #define R_ALT_ENTRY       0xb5 /* b5:     alternate exit */
  304. #define R_EXIT            0xb6 /* b6:     procedure exit */
  305. #define R_BEGIN_TRY       0xb7 /* b7:     start of try block */
  306. #define R_END_TRY         0xb8 /* b8-ba:  end of try block */
  307. #define R_BEGIN_BRTAB     0xbb /* bb:     start of branch table */
  308. #define R_END_BRTAB       0xbc /* bc:     end of branch table */
  309. #define R_STATEMENT       0xbd /* bd-bf:  statement number */
  310. #define R_DATA_EXPR       0xc0 /* c0:     1 word, relocatable data expr */
  311. #define R_CODE_EXPR       0xc1 /* c1:     1 word, relocatable code expr */
  312. #define R_FSEL            0xc2 /* c2:     F' override */
  313. #define R_LSEL            0xc3 /* c3:     L'/LD'/LS'/LR' override */
  314. #define R_RSEL            0xc4 /* c4:     R'/RD'/RS'/RR' override */
  315. #define R_N_MODE          0xc5 /* c5:     set L'/R' mode */
  316. #define R_S_MODE          0xc6 /* c6:     set LS'/RS' mode */
  317. #define R_D_MODE          0xc7 /* c7:     set LD'/RD' mode */
  318. #define R_R_MODE          0xc8 /* c8:     set LR'/RR' mode */
  319. #define R_DATA_OVERRIDE   0xc9  /* c9-cd:  get data from fixup area */
  320. #define R_TRANSLATED      0xce  /* ce:     toggle translated mode */
  321. #define R_AUX_UNWIND      0xcf  /* cf:     auxiliary unwind (proc begin) */
  322. #define R_COMP1           0xd0 /* d0:     arbitrary expression */
  323. #define     R_PUSH_PCON1      0x00      /* 00-3f:  positive constant */
  324. #define     R_PUSH_DOT        0x40
  325. #define     R_MAX             0x41
  326. #define     R_MIN             0x42
  327. #define     R_ADD             0x43
  328. #define     R_SUB             0x44
  329. #define     R_MULT            0x45
  330. #define     R_DIV             0x46
  331. #define     R_MOD             0x47
  332. #define     R_AND             0x48
  333. #define     R_OR              0x49
  334. #define     R_XOR             0x4a
  335. #define     R_NOT             0x4b
  336.                                         /* 4c-5f:  reserved */
  337. #define     R_LSHIFT          0x60      /* 60-7f:  shift count (0-variable) */
  338. #define     R_ARITH_RSHIFT    0x80      /* 80-9f:  shift count (0-variable) */
  339. #define     R_LOGIC_RSHIFT    0xa0      /* a0-bf:  shift count (0-variable) */
  340. #define     R_PUSH_NCON1      0xc0      /* c0-ff:  negative constant */
  341. #define R_COMP2           0xd1 /* d1:     arbitrary expression */
  342. #define     R_PUSH_PCON2      0x00      /* 00-7f:  positive constant */
  343. #define     R_PUSH_SYM        0x80
  344.                                         /* 81:     reserved */
  345. #define     R_PUSH_PLABEL     0x82      /* 82-83:  plabel */
  346.                                         /* 84-bf:  reserved */
  347. #define     R_PUSH_NCON2      0xc0      /* c0-ff:  negative constant */
  348. #define R_COMP3           0xd2 /* d2:     arbitrary expression */
  349. #define     R_PUSH_PROC       0x00      /* 00-01:  procedure */
  350. #define     R_PUSH_CONST      0x02      /* 02:     constant */
  351.                                         /* 03-ff:  reserved */
  352. #define R_PREV_FIXUP      0xd3 /* d3-d6:  apply previous fixup again */
  353. #define R_SEC_STMT        0xd7 /* d7:     secondary statement number */
  354. /* d8-df:  reserved */
  355. #define R_RESERVED        0xe0 /* e0-ff:  reserved for compiler/linker */
  356. /*
  357.  * Loader fixups
  358.  *
  359.  * These are produced by the linker only when the -HK option is used.
  360.  * They indicate initialized pointers in the data space that contain
  361.  * the addresses of other locations in the data space, so that those
  362.  * pointers can be relocated at load time if the data is loaded at
  363.  * some address other than that specified at link time.  (References
  364.  * from code to data are always relative to the dp register (r27),
  365.  * and will not need to be relocated.)  These are needed primarily
  366.  * for the MPE XL operating system, but may be useful for some
  367.  * dynamic loading applications on HP-UX.
  368.  */
  369. struct loader_fixup {
  370.         unsigned int fixup_type;
  371.         unsigned int space_index;   /* index of space to fix up         */
  372.         unsigned int space_offset;  /* offset at which to patch         */
  373.         int       constant;     /* constant used to patch the space */
  374. };
  375. /* loader fixup types */
  376. #define LD_SPACE_REF 0  /* space reference fixup */
  377. #define LD_DATA_REF  1  /* data reference fixup  */
  378. #define LD_XRT_REF   2  /* XRT reference fixup  */
  379. #define LDRFIX struct loader_fixup
  380. #define LDRFIXSZ sizeof(LDRFIX)
  381. /*
  382.  * The following definitions are for old-format relocatable object
  383.  * files, and for absolute fixups (e_abs) in all executable files.
  384.  * Old relocatable object files were produced by compilers before
  385.  * HP-UX Release 3.0 on the Series 800, and the file header contains
  386.  * the version number VERSION_ID (see filehdr.h).
  387.  *
  388.  * Absolute fixups are produced by the linker only when the -HF
  389.  * option is specified.  They record the locations of all absolute
  390.  * branches (LDIL/BLE) in the code, so that code can be relocated
  391.  * without being completely relinked.  They are primarily useful
  392.  * only on MPE XL, but may be useful in dynamic loading applications
  393.  * on HP-UX.
  394.  */
  395. typedef struct fixup_request_record {
  396.         unsigned int need_data_ref  : 1;
  397.         unsigned int arg_reloc      : 10;
  398.         unsigned int expression_type: 5;  /* type of expr. providing value    */
  399. unsigned int exec_level     : 2;  /* execution level at point of call */
  400.         unsigned int fixup_format   : 6;  /* inst. or data format             */
  401.         unsigned int fixup_field    : 8;  /* field from fixup value           */
  402.         unsigned int subspace_offset;     /* offset of word to be fixed up    */
  403.         unsigned int symbol_index_one;    /* sequence # of symbol             */
  404.         unsigned int symbol_index_two;    /* sequence # of second symbol      */
  405.         int          fixup_constant;      /* constant part                  */
  406. } FIXUP;
  407. /* field selectors */
  408. #define e_fsel  0    /* F'  : no change                 */
  409. #define e_lssel 1    /* LS' : if (bit 21) then add 0x800
  410.                               arithmetic shift right 11 bits */
  411. #define e_rssel 2    /* RS' : Sign extend from bit 21        */
  412. #define e_lsel  3    /* L'  : Arithmetic shift right 11 bits */
  413. #define e_rsel  4    /* R'  : Set bits 0-20 to zero          */
  414. #define e_ldsel 5    /* LD' : Add 0x800, arithmetic shift
  415.                               right 11 bits                */
  416. #define e_rdsel 6    /* RD' : Set bits 0-20 to one           */
  417. #define e_lrsel 7    /* LR' : L' with "rounded" constant     */
  418. #define e_rrsel 8    /* RR' : R' with "rounded" constant     */
  419. /* expression types */
  420. #define e_one         0      /* label + constant                   */
  421. #define e_two         1      /* label - label + constant           */
  422. #define e_pcrel       2      /* label - subspace offset + constant */
  423. #define e_con         3      /* constant                           */
  424. #define e_plabel      7      /* plabel for label                   */
  425. #define e_abs      18      /* absolute, 1st sym index is address */
  426. /* fixup formats */
  427. #define i_exp14 0      /* 14 bit signed long displacement     */
  428. #define i_exp21 1      /* 21 bit signed immediate             */
  429. #define i_exp11 2      /* signed 11 bit immediate             */
  430. #define i_rel17 3      /* 19 bit signed displacement, discard */
  431.                        /* 2 low order bits to make 17 bits    */
  432. #define i_rel12 4      /* 14 bit signed displacement, discard */
  433.                        /* 2 low order bits to make 12 bits    */
  434. #define i_data  5      /* whole word                          */
  435. #define i_none  6      /* no expression in this word          */
  436. #define i_abs17 7      /* same as i_rel17                     */
  437. #define i_milli 8      /* i_abs17 plus SR bits                */
  438. #define i_break 9      /* conditionally replace NOP w/ BREAK  */
  439. #define RELSZ sizeof(FIXUP)
  440. #endif  /* INCsom_coffh */