blob: 377e0d2b85dacc16d26e501ab6b5c3da4edf0207 [file] [log] [blame]
rsca84cbb22004-04-19 19:29:25 +00001typedef struct Macho Macho;
2typedef struct MachoCmd MachoCmd;
3
4enum
5{
6 MachoCpuVax = 1,
7 MachoCpu68000 = 6,
8 MachoCpu386 = 7,
9 MachoCpuMips = 8,
10 MachoCpu98000 = 10,
11 MachoCpuHppa = 11,
12 MachoCpuArm = 12,
13 MachoCpu88000 = 13,
14 MachoCpuSparc = 14,
15 MachoCpu860 = 15,
16 MachoCpuAlpha = 16,
17 MachoCpuPower = 18,
18
19 MachoCmdSegment = 1,
20 MachoCmdSymtab = 2,
21 MachoCmdSymseg = 3,
22 MachoCmdThread = 4,
23
24 MachoFileObject = 1,
25 MachoFileExecutable = 2,
26 MachoFileFvmlib = 3,
27 MachoFileCore = 4,
28 MachoFilePreload = 5,
29};
30
31struct MachoCmd
32{
33 int type;
34 ulong off;
35 ulong size;
36 struct {
37 char name[16+1];
38 ulong vmaddr;
39 ulong vmsize;
40 ulong fileoff;
41 ulong filesz;
42 ulong maxprot;
43 ulong initprot;
44 ulong nsect;
45 ulong flags;
46 } seg;
47 struct {
48 ulong symoff;
49 ulong nsyms;
50 ulong stroff;
51 ulong strsize;
52 } sym;
53};
54
55struct Macho
56{
57 int fd;
58 uint cputype;
59 uint subcputype;
60 ulong filetype;
61 ulong flags;
62 MachoCmd *cmd;
63 uint ncmd;
64 u32int (*e4)(uchar*);
65 int (*coreregs)(Macho*, uchar**);
66};
67
68Macho *machoopen(char*);
69Macho *machoinit(int);
70void machoclose(Macho*);
71int coreregsmachopower(Macho*, uchar**);