Blame include/oasys.h

Packit bbfece
/* Oasys object format header file for BFD.
Packit bbfece
Packit bbfece
   Copyright (C) 2001-2018 Free Software Foundation, Inc.
Packit bbfece
Packit bbfece
   This program is free software; you can redistribute it and/or modify
Packit bbfece
   it under the terms of the GNU General Public License as published by
Packit bbfece
   the Free Software Foundation; either version 3, or (at your option)
Packit bbfece
   any later version.
Packit bbfece
Packit bbfece
   This program is distributed in the hope that it will be useful,
Packit bbfece
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit bbfece
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit bbfece
   GNU General Public License for more details.
Packit bbfece
Packit bbfece
   You should have received a copy of the GNU General Public License
Packit bbfece
   along with this program; if not, write to the Free Software
Packit bbfece
   Foundation, Inc., 51 Franklin Street - Fifth Floor,
Packit bbfece
   Boston, MA 02110-1301, USA.
Packit bbfece
Packit bbfece
   Contributed by Cygnus Support.  */
Packit bbfece
Packit bbfece
#define OASYS_MAX_SEC_COUNT 16
Packit bbfece
/* **** */
Packit bbfece
Packit bbfece
typedef struct oasys_archive_header
Packit bbfece
  {
Packit bbfece
    unsigned int  version;
Packit bbfece
    char create_date[12];
Packit bbfece
    char revision_date[12];
Packit bbfece
    unsigned int mod_count;
Packit bbfece
    file_ptr mod_tbl_offset;
Packit bbfece
    unsigned int sym_tbl_size;
Packit bbfece
    unsigned int sym_count;
Packit bbfece
    file_ptr sym_tbl_offset;
Packit bbfece
    unsigned int xref_count;
Packit bbfece
    file_ptr xref_lst_offset;
Packit bbfece
  }
Packit bbfece
oasys_archive_header_type;
Packit bbfece
Packit bbfece
typedef struct oasys_extarchive_header
Packit bbfece
  {
Packit bbfece
    bfd_byte version[4];
Packit bbfece
    bfd_byte create_date[12];
Packit bbfece
    bfd_byte revision_date[12];
Packit bbfece
    bfd_byte mod_count[4];
Packit bbfece
    bfd_byte mod_tbl_offset[4];
Packit bbfece
    bfd_byte sym_tbl_size[4];
Packit bbfece
    bfd_byte sym_count[4];
Packit bbfece
    bfd_byte sym_tbl_offset[4];
Packit bbfece
    bfd_byte xref_count[4];
Packit bbfece
    bfd_byte xref_lst_offset[4];
Packit bbfece
  }
Packit bbfece
oasys_extarchive_header_type;
Packit bbfece
Packit bbfece
typedef struct oasys_module_table
Packit bbfece
  {
Packit bbfece
    int mod_number;
Packit bbfece
    char mod_date[12];
Packit bbfece
    unsigned int mod_size;
Packit bbfece
    unsigned int dep_count;
Packit bbfece
    unsigned int depee_count;
Packit bbfece
    file_ptr file_offset;
Packit bbfece
    unsigned int sect_count;
Packit bbfece
    char *module_name;
Packit bbfece
    unsigned int module_name_size;
Packit bbfece
  }
Packit bbfece
oasys_module_table_type;
Packit bbfece
Packit bbfece
typedef struct oasys_extmodule_table_a
Packit bbfece
  {
Packit bbfece
    bfd_byte mod_number[4];
Packit bbfece
    bfd_byte mod_date[12];
Packit bbfece
    bfd_byte mod_size[4];
Packit bbfece
    bfd_byte dep_count[4];
Packit bbfece
    bfd_byte depee_count[4];
Packit bbfece
    bfd_byte sect_count[4];
Packit bbfece
    bfd_byte file_offset[4];
Packit bbfece
    bfd_byte mod_name[32];
Packit bbfece
  }
Packit bbfece
oasys_extmodule_table_type_a_type;
Packit bbfece
Packit bbfece
typedef struct oasys_extmodule_table_b
Packit bbfece
  {
Packit bbfece
    bfd_byte mod_number[4];
Packit bbfece
    bfd_byte mod_date[12];
Packit bbfece
    bfd_byte mod_size[4];
Packit bbfece
    bfd_byte dep_count[4];
Packit bbfece
    bfd_byte depee_count[4];
Packit bbfece
    bfd_byte sect_count[4];
Packit bbfece
    bfd_byte file_offset[4];
Packit bbfece
    bfd_byte mod_name_length[4];
Packit bbfece
  }
Packit bbfece
oasys_extmodule_table_type_b_type;
Packit bbfece
Packit bbfece
typedef enum oasys_record
Packit bbfece
  {
Packit bbfece
    oasys_record_is_end_enum = 0,
Packit bbfece
    oasys_record_is_data_enum = 1,
Packit bbfece
    oasys_record_is_symbol_enum = 2,
Packit bbfece
    oasys_record_is_header_enum = 3,
Packit bbfece
    oasys_record_is_named_section_enum = 4,
Packit bbfece
    oasys_record_is_com_enum = 5,
Packit bbfece
    oasys_record_is_debug_enum = 6,
Packit bbfece
    oasys_record_is_section_enum = 7,
Packit bbfece
    oasys_record_is_debug_file_enum = 8,
Packit bbfece
    oasys_record_is_module_enum = 9,
Packit bbfece
    oasys_record_is_local_enum = 10
Packit bbfece
  }
Packit bbfece
oasys_record_enum_type;
Packit bbfece
Packit bbfece
typedef struct oasys_record_header
Packit bbfece
  {
Packit bbfece
    unsigned char length;
Packit bbfece
    unsigned char check_sum;
Packit bbfece
    unsigned char type;
Packit bbfece
    unsigned char fill;
Packit bbfece
  }
Packit bbfece
oasys_record_header_type;
Packit bbfece
Packit bbfece
typedef struct oasys_data_record
Packit bbfece
  {
Packit bbfece
    oasys_record_header_type header;
Packit bbfece
    unsigned char relb;
Packit bbfece
    bfd_byte addr[4];
Packit bbfece
    /* maximum total size of data record is 255 bytes */
Packit bbfece
    bfd_byte data[246];
Packit bbfece
  }
Packit bbfece
oasys_data_record_type;
Packit bbfece
Packit bbfece
typedef struct oasys_header_record
Packit bbfece
  {
Packit bbfece
    oasys_record_header_type header;
Packit bbfece
    unsigned char version_number;
Packit bbfece
    unsigned char rev_number;
Packit bbfece
    char module_name[26-6];
Packit bbfece
    char description[64-26];
Packit bbfece
  }
Packit bbfece
oasys_header_record_type;
Packit bbfece
Packit bbfece
#define OASYS_VERSION_NUMBER 0
Packit bbfece
#define OASYS_REV_NUMBER 0
Packit bbfece
Packit bbfece
typedef struct oasys_symbol_record
Packit bbfece
  {
Packit bbfece
    oasys_record_header_type header;
Packit bbfece
    unsigned char relb;
Packit bbfece
    bfd_byte value[4];
Packit bbfece
    bfd_byte refno[2];
Packit bbfece
    char name[64];
Packit bbfece
  }
Packit bbfece
oasys_symbol_record_type;
Packit bbfece
Packit bbfece
#define RELOCATION_PCREL_BIT 0x80
Packit bbfece
#define RELOCATION_32BIT_BIT 0x40
Packit bbfece
#define RELOCATION_TYPE_BITS 0x30
Packit bbfece
#define RELOCATION_TYPE_ABS 0x00
Packit bbfece
#define RELOCATION_TYPE_REL 0x10
Packit bbfece
#define RELOCATION_TYPE_UND 0x20
Packit bbfece
#define RELOCATION_TYPE_COM 0x30
Packit bbfece
#define RELOCATION_SECT_BITS 0x0f
Packit bbfece
Packit bbfece
typedef struct oasys_section_record
Packit bbfece
  {
Packit bbfece
    oasys_record_header_type header;
Packit bbfece
    unsigned char relb;
Packit bbfece
    bfd_byte value[4];
Packit bbfece
    bfd_byte vma[4];
Packit bbfece
    bfd_byte fill[3];
Packit bbfece
  }
Packit bbfece
oasys_section_record_type;
Packit bbfece
Packit bbfece
typedef struct oasys_end_record
Packit bbfece
  {
Packit bbfece
    oasys_record_header_type header;
Packit bbfece
    unsigned char relb;
Packit bbfece
    bfd_byte entry[4];
Packit bbfece
    bfd_byte fill[2];
Packit bbfece
    bfd_byte zero;
Packit bbfece
  }
Packit bbfece
oasys_end_record_type;
Packit bbfece
Packit bbfece
typedef union oasys_record_union
Packit bbfece
  {
Packit bbfece
    oasys_record_header_type header;
Packit bbfece
    oasys_data_record_type data;
Packit bbfece
    oasys_section_record_type section;
Packit bbfece
    oasys_symbol_record_type symbol;
Packit bbfece
    oasys_header_record_type first;
Packit bbfece
    oasys_end_record_type end;
Packit bbfece
    bfd_byte pad[256];
Packit bbfece
  }
Packit bbfece
oasys_record_union_type;