home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gdb-4.16-base.tgz / gdb-4.16-base.tar / fsf / gdb / include / oasys.h < prev    next >
C/C++ Source or Header  |  1993-06-18  |  4KB  |  153 lines

  1. /* Oasys object format header file for BFD.
  2.    Contributed by Cygnus Support.  */
  3.  
  4. #define OASYS_MAX_SEC_COUNT 16
  5. /* **** */
  6.  
  7. typedef struct oasys_archive_header {
  8.   unsigned int  version;
  9.   char create_date[12];
  10.   char revision_date[12];
  11.   unsigned int mod_count;
  12.   file_ptr mod_tbl_offset;
  13.   unsigned int sym_tbl_size;
  14.   unsigned int sym_count;
  15.   file_ptr sym_tbl_offset;
  16.   unsigned int xref_count;
  17.   file_ptr xref_lst_offset;
  18. } oasys_archive_header_type;
  19.  
  20. typedef struct oasys_extarchive_header {
  21.   bfd_byte version[4];
  22.   bfd_byte create_date[12];
  23.   bfd_byte revision_date[12];
  24.   bfd_byte mod_count[4];
  25.   bfd_byte mod_tbl_offset[4];
  26.   bfd_byte sym_tbl_size[4];
  27.   bfd_byte sym_count[4];
  28.   bfd_byte sym_tbl_offset[4];
  29.   bfd_byte xref_count[4];
  30.   bfd_byte xref_lst_offset[4];
  31. } oasys_extarchive_header_type;
  32.  
  33. typedef struct oasys_module_table {
  34.   int mod_number;
  35.   char mod_date[12];
  36.   unsigned int mod_size;
  37.   unsigned int dep_count;
  38.   unsigned int depee_count;
  39.   file_ptr file_offset;
  40.   unsigned int sect_count;
  41.   char *module_name;
  42.   unsigned int module_name_size;
  43. } oasys_module_table_type;
  44.  
  45.  
  46. typedef struct oasys_extmodule_table_a {
  47.   bfd_byte mod_number[4];
  48.   bfd_byte mod_date[12];
  49.   bfd_byte mod_size[4];
  50.   bfd_byte dep_count[4];
  51.   bfd_byte depee_count[4];
  52.   bfd_byte sect_count[4];
  53.   bfd_byte file_offset[4];
  54.   bfd_byte mod_name[32];
  55. } oasys_extmodule_table_type_a_type;
  56.  
  57. typedef struct oasys_extmodule_table_b {
  58.   bfd_byte mod_number[4];
  59.   bfd_byte mod_date[12];
  60.   bfd_byte mod_size[4];
  61.   bfd_byte dep_count[4];
  62.   bfd_byte depee_count[4];
  63.   bfd_byte sect_count[4];
  64.   bfd_byte file_offset[4];
  65.   bfd_byte mod_name_length[4];
  66. } oasys_extmodule_table_type_b_type;
  67.  
  68.  
  69. typedef enum oasys_record {
  70.   oasys_record_is_end_enum = 0,
  71.   oasys_record_is_data_enum = 1,
  72.   oasys_record_is_symbol_enum = 2,
  73.   oasys_record_is_header_enum = 3,
  74.   oasys_record_is_named_section_enum = 4,
  75.   oasys_record_is_com_enum = 5,
  76.   oasys_record_is_debug_enum = 6,
  77.   oasys_record_is_section_enum = 7,
  78.   oasys_record_is_debug_file_enum = 8,
  79.   oasys_record_is_module_enum = 9,
  80.   oasys_record_is_local_enum = 10
  81. } oasys_record_enum_type;
  82.  
  83.   
  84.  
  85. typedef struct oasys_record_header {
  86.   unsigned char length;
  87.   unsigned char check_sum;
  88.   unsigned char type;
  89.   unsigned char fill;
  90. } oasys_record_header_type;
  91.  
  92. typedef struct oasys_data_record {
  93.   oasys_record_header_type header;
  94.   unsigned char relb;
  95.   bfd_byte addr[4];
  96.   /* maximum total size of data record is 255 bytes */
  97.   bfd_byte data[246];
  98. } oasys_data_record_type;
  99.  
  100. typedef struct oasys_header_record {
  101.   oasys_record_header_type header;
  102.   unsigned char version_number;
  103.   unsigned char rev_number;
  104.   char module_name[26-6];
  105.   char description[64-26];
  106. } oasys_header_record_type;
  107.  
  108. #define OASYS_VERSION_NUMBER 0
  109. #define OASYS_REV_NUMBER 0
  110.  
  111. typedef struct oasys_symbol_record {
  112.   oasys_record_header_type header;
  113.   unsigned char relb;
  114.   bfd_byte value[4];
  115.   bfd_byte refno[2];
  116.   char name[64];
  117. } oasys_symbol_record_type;
  118.  
  119. #define RELOCATION_PCREL_BIT 0x80
  120. #define RELOCATION_32BIT_BIT 0x40
  121. #define RELOCATION_TYPE_BITS 0x30
  122. #define RELOCATION_TYPE_ABS 0x00
  123. #define RELOCATION_TYPE_REL 0x10
  124. #define RELOCATION_TYPE_UND 0x20
  125. #define RELOCATION_TYPE_COM 0x30
  126. #define RELOCATION_SECT_BITS 0x0f
  127.  
  128. typedef struct oasys_section_record {
  129.   oasys_record_header_type header;
  130.   unsigned char relb;
  131.   bfd_byte value[4];
  132.   bfd_byte vma[4];
  133.   bfd_byte fill[3];
  134. } oasys_section_record_type;
  135.  
  136. typedef struct oasys_end_record {
  137.   oasys_record_header_type header;
  138.   unsigned char relb;
  139.   bfd_byte entry[4];
  140.   bfd_byte fill[2];
  141.   bfd_byte zero;
  142. } oasys_end_record_type;
  143.  
  144. typedef union oasys_record_union {
  145.   oasys_record_header_type header;
  146.   oasys_data_record_type data;
  147.   oasys_section_record_type section;
  148.   oasys_symbol_record_type symbol;
  149.   oasys_header_record_type first;
  150.   oasys_end_record_type end;
  151.   bfd_byte pad[256];
  152. } oasys_record_union_type;
  153.