diff options
author | Ian Lance Taylor <ian@airs.com> | 1993-01-08 21:27:06 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1993-01-08 21:27:06 +0000 |
commit | 57115f09a8154282502633d616fe9b695b5409ce (patch) | |
tree | 20a7ed476d4ca085f681ba0813b3340c2a7a32aa /include/coff/mips.h | |
parent | 6082cdd566a665edc95315e272d0555d0e49b41d (diff) | |
download | gdb-57115f09a8154282502633d616fe9b695b5409ce.zip gdb-57115f09a8154282502633d616fe9b695b5409ce.tar.gz gdb-57115f09a8154282502633d616fe9b695b5409ce.tar.bz2 |
Fri Jan 8 16:19:26 1993 Ian Lance Taylor (ian@tweedledumb.cygnus.com)
* ecoff-ext.h: Added prototypes for ECOFF swapping functions.
* internal.h (internal_scnhdr): Always provide s_align field, not
just on i960.
(internal_reloc): Always provide r_size field, not just on
RS/6000.
* mips.h (_RDATA, _SDATA, _SBSS, _LIT4, _LIT8, STYP_RDATA,
STYP_SDATA, STYP_SBSS, STYP_LIT4, STYP_LIT8): Defined.
(CODE_MASK, MIPS_IS_STAB, MIPS_MARK_STAB, MIPS_UNMARK_STAB,
STABS_SYMBOL): Moved in from gdb/mipsread.c.
Diffstat (limited to 'include/coff/mips.h')
-rw-r--r-- | include/coff/mips.h | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/include/coff/mips.h b/include/coff/mips.h new file mode 100644 index 0000000..594def0 --- /dev/null +++ b/include/coff/mips.h @@ -0,0 +1,121 @@ +/* Rudimentary ECOFF support on MIPS machines. + This lacks symbol information, normally provided on MIPS Unix systems + in the files <sym.h> and <symconst.h>. */ + +/********************** FILE HEADER **********************/ + +struct external_filehdr { + unsigned char f_magic[2]; /* magic number */ + unsigned char f_nscns[2]; /* number of sections */ + unsigned char f_timdat[4]; /* time & date stamp */ + unsigned char f_symptr[4]; /* file pointer to symtab */ + unsigned char f_nsyms[4]; /* number of symtab entries */ + unsigned char f_opthdr[2]; /* sizeof(optional hdr) */ + unsigned char f_flags[2]; /* flags */ +}; + + +/* Mips magics */ +#define MIPS_MAGIC_1 0x0180 +#define MIPS_MAGIC_2 0x0162 +#define MIPS_MAGIC_3 0x0160 + +#define ECOFFBADMAG(x) (((x).f_magic!=MIPS_MAGIC_1) && \ + ((x).f_magic!=MIPS_MAGIC_2) &&\ + ((x).f_magic!=MIPS_MAGIC_3)) + + +#define FILHDR struct external_filehdr +#define FILHSZ 20 + +/********************** AOUT "OPTIONAL HEADER" **********************/ + + +typedef struct external_aouthdr +{ + unsigned char magic[2]; /* type of file */ + unsigned char vstamp[2]; /* version stamp */ + unsigned char tsize[4]; /* text size in bytes, padded to FW bdry*/ + unsigned char dsize[4]; /* initialized data " " */ + unsigned char bsize[4]; /* uninitialized data " " */ + unsigned char entry[4]; /* entry pt. */ + unsigned char text_start[4]; /* base of text used for this file */ + unsigned char data_start[4]; /* base of data used for this file */ +} AOUTHDR; + +/* compute size of a header */ + +#define AOUTSZ (sizeof(AOUTHDR)) + + +/********************** SECTION HEADER **********************/ + +struct external_scnhdr { + unsigned char s_name[8]; /* section name */ + unsigned char s_paddr[4]; /* physical address, aliased s_nlib */ + unsigned char s_vaddr[4]; /* virtual address */ + unsigned char s_size[4]; /* section size */ + unsigned char s_scnptr[4]; /* file ptr to raw data for section */ + unsigned char s_relptr[4]; /* file ptr to relocation */ + unsigned char s_lnnoptr[4]; /* file ptr to line numbers */ + unsigned char s_nreloc[2]; /* number of relocation entries */ + unsigned char s_nlnno[2]; /* number of line number entries*/ + unsigned char s_flags[4]; /* flags */ +}; + +#define SCNHDR struct external_scnhdr +#define SCNHSZ sizeof(SCNHDR) + +/* + * names of "special" sections + */ +#define _TEXT ".text" +#define _DATA ".data" +#define _BSS ".bss" +#define _RDATA ".rdata" +#define _SDATA ".sdata" +#define _SBSS ".sbss" +#define _LIT4 ".lit4" +#define _LIT8 ".lit8" + +#define DEFAULT_DATA_SECTION_ALIGNMENT 4 +#define DEFAULT_BSS_SECTION_ALIGNMENT 4 +#define DEFAULT_TEXT_SECTION_ALIGNMENT 16 +/* For new sections we havn't heard of before */ +#define DEFAULT_SECTION_ALIGNMENT 4 + +/* MIPS ECOFF uses some additional section types. */ +#define STYP_RDATA 0x100 +#define STYP_SDATA 0x200 +#define STYP_SBSS 0x400 +#define STYP_LIT8 0x8000000 +#define STYP_LIT4 0x10000000 + +/* I don't know when this is used. */ +#define STYP_OTHER_LOAD 0x80000000 + +/********************** RELOCATION DIRECTIVES **********************/ + +struct external_reloc { + unsigned char r_vaddr[4]; + unsigned char r_symndx[4]; + unsigned char r_type[2]; + unsigned char pad[2]; +}; + + +/* Relevent values for r_type and ecoff. Would someone please document them */ + +#define RELOC struct external_reloc +#define RELSZ 12 + +/* gcc uses mips-tfile to output type information in special stabs + entries. These must match the corresponding definition in + gcc/config/mips.h. At some point, these should probably go into a + shared include file, but currently gcc and gdb do not share any + directories. */ +#define CODE_MASK 0x8F300 +#define MIPS_IS_STAB(sym) (((sym)->index & 0xFFF00) == CODE_MASK) +#define MIPS_MARK_STAB(code) ((code)+CODE_MASK) +#define MIPS_UNMARK_STAB(code) ((code)-CODE_MASK) +#define STABS_SYMBOL "@stabs" |