1
2
3
4typedef struct filehdr {
5 unsigned short f_magic;
6 unsigned short f_nscns;
7 long f_timdat;
8 long f_symptr;
9 long f_nsyms;
10 unsigned short f_opthdr;
11 unsigned short f_flags;
12} FILHDR;
13#define FILHSZ sizeof(FILHDR)
14
15#define OMAGIC 0407
16#define MIPSEBMAGIC 0x160
17#define MIPSELMAGIC 0x162
18
19typedef struct scnhdr {
20 char s_name[8];
21 long s_paddr;
22 long s_vaddr;
23 long s_size;
24 long s_scnptr;
25 long s_relptr;
26 long s_lnnoptr;
27 unsigned short s_nreloc;
28 unsigned short s_nlnno;
29 long s_flags;
30} SCNHDR;
31#define SCNHSZ sizeof(SCNHDR)
32#define SCNROUND ((long)16)
33
34typedef struct aouthdr {
35 short magic;
36 short vstamp;
37 long tsize;
38 long dsize;
39 long bsize;
40 long entry;
41 long text_start;
42 long data_start;
43 long bss_start;
44 long gprmask;
45 long cprmask[4];
46 long gp_value;
47} AOUTHDR;
48#define AOUTHSZ sizeof(AOUTHDR)
49
50#define OMAGIC 0407
51#define NMAGIC 0410
52#define ZMAGIC 0413
53#define SMAGIC 0411
54#define LIBMAGIC 0443
55
56#define N_TXTOFF(f, a) \
57 ((a).magic == ZMAGIC || (a).magic == LIBMAGIC ? 0 : \
58 ((a).vstamp < 23 ? \
59 ((FILHSZ + AOUTHSZ + (f).f_nscns * SCNHSZ + 7) & 0xfffffff8) : \
60 ((FILHSZ + AOUTHSZ + (f).f_nscns * SCNHSZ + SCNROUND-1) & ~(SCNROUND-1)) ) )
61#define N_DATOFF(f, a) \
62 N_TXTOFF(f, a) + (a).tsize;
63