2005-04-17 02:20:36 +04:00
/*
* Some ECOFF definitions .
*/
typedef struct filehdr {
2013-01-22 15:59:30 +04:00
unsigned short f_magic ; /* magic number */
unsigned short f_nscns ; /* number of sections */
long f_timdat ; /* time & date stamp */
long f_symptr ; /* file pointer to symbolic header */
long f_nsyms ; /* sizeof(symbolic hdr) */
unsigned short f_opthdr ; /* sizeof(optional hdr) */
unsigned short f_flags ; /* flags */
2005-04-17 02:20:36 +04:00
} FILHDR ;
2013-01-22 15:59:30 +04:00
# define FILHSZ sizeof(FILHDR)
2005-04-17 02:20:36 +04:00
# define MIPSEBMAGIC 0x160
# define MIPSELMAGIC 0x162
typedef struct scnhdr {
2013-01-22 15:59:30 +04:00
char s_name [ 8 ] ; /* section name */
long s_paddr ; /* physical address, aliased s_nlib */
long s_vaddr ; /* virtual address */
long s_size ; /* section size */
long s_scnptr ; /* file ptr to raw data for section */
long s_relptr ; /* file ptr to relocation */
long s_lnnoptr ; /* file ptr to gp histogram */
unsigned short s_nreloc ; /* number of relocation entries */
unsigned short s_nlnno ; /* number of gp histogram entries */
long s_flags ; /* flags */
2005-04-17 02:20:36 +04:00
} SCNHDR ;
# define SCNHSZ sizeof(SCNHDR)
# define SCNROUND ((long)16)
typedef struct aouthdr {
2013-01-22 15:59:30 +04:00
short magic ; /* see above */
short vstamp ; /* version stamp */
long tsize ; /* text size in bytes, padded to DW bdry*/
long dsize ; /* initialized data " " */
long bsize ; /* uninitialized data " " */
long entry ; /* entry pt. */
long text_start ; /* base of text used for this file */
long data_start ; /* base of data used for this file */
long bss_start ; /* base of bss used for this file */
long gprmask ; /* general purpose register mask */
long cprmask [ 4 ] ; /* co-processor register masks */
long gp_value ; /* the gp value used for this object */
2005-04-17 02:20:36 +04:00
} AOUTHDR ;
# define AOUTHSZ sizeof(AOUTHDR)
# define OMAGIC 0407
# define NMAGIC 0410
# define ZMAGIC 0413
# define SMAGIC 0411
2013-01-22 15:59:30 +04:00
# define LIBMAGIC 0443
2005-04-17 02:20:36 +04:00
# define N_TXTOFF(f, a) \
( ( a ) . magic = = ZMAGIC | | ( a ) . magic = = LIBMAGIC ? 0 : \
( ( a ) . vstamp < 23 ? \
( ( FILHSZ + AOUTHSZ + ( f ) . f_nscns * SCNHSZ + 7 ) & 0xfffffff8 ) : \
( ( FILHSZ + AOUTHSZ + ( f ) . f_nscns * SCNHSZ + SCNROUND - 1 ) & ~ ( SCNROUND - 1 ) ) ) )
# define N_DATOFF(f, a) \
N_TXTOFF ( f , a ) + ( a ) . tsize ;