home *** CD-ROM | disk | FTP | other *** search
- /* The type used for a target address */
- typedef unsigned long relax_addressT;
-
- /*
- * relax_stateT is a fragment's type and stored in a struct frag's fr_type
- * field.
- */
- typedef enum {
- rs_fill, /* Variable chars to be repeated fr_offset */
- /* times. Fr_symbol unused. */
- /* Used with fr_offset == 0 for a constant */
- /* length frag. */
- rs_align, /* Align: Fr_offset: power of 2. */
- /* 1 variable char: fill character. */
- rs_org, /* Org: Fr_offset, fr_symbol: address. */
- /* 1 variable char: fill character. */
- rs_machine_dependent,
- } relax_stateT;
-
- /*
- * For machine dependent fragments, a struct frag's who's fr_type field is
- * rs_machine_dependent it's substate is stored in the struct frag's fr_subtype;
- * field. The substate is used to index in to md_relax_table by relax_section()
- * in layout.c to drive the span dependent branch algorithm of the assembler.
- * The substate is a machine dependent indication of what type of branch
- * instruction this fragment is.
- */
- typedef unsigned long relax_substateT;
-
- /*
- * relax_typeS is the structure that is the entry in the md_relax_table array.
- * It is indexed into by the substate of a fragment for machine depependent
- * branches that have variable sizes. The entry tell how far this branch can
- * reach, rlx_forward and rlx_backward, as well as the size of branch,
- * rlx_length, and which substate go to, rlx_more, if this sized branch can't
- * reach it's target.
- */
- typedef struct {
- long rlx_forward; /* Forward reach. Signed number. > 0. */
- long rlx_backward; /* Backward reach. Signed number. < 0. */
- unsigned char rlx_length; /* Bytes length of this address. */
- relax_substateT rlx_more; /* Next longer relax-state. */
- /* 0 means there is no 'next' relax-state. */
- } relax_typeS;
-