typedef struct Macho Macho; typedef struct MachoCmd MachoCmd; enum { MachoCpuVax = 1, MachoCpu68000 = 6, MachoCpu386 = 7, MachoCpuMips = 8, MachoCpu98000 = 10, MachoCpuHppa = 11, MachoCpuArm = 12, MachoCpu88000 = 13, MachoCpuSparc = 14, MachoCpu860 = 15, MachoCpuAlpha = 16, MachoCpuPower = 18, MachoCmdSegment = 1, MachoCmdSymtab = 2, MachoCmdSymseg = 3, MachoCmdThread = 4, MachoFileObject = 1, MachoFileExecutable = 2, MachoFileFvmlib = 3, MachoFileCore = 4, MachoFilePreload = 5, }; struct MachoCmd { int type; ulong off; ulong size; struct { char name[16+1]; ulong vmaddr; ulong vmsize; ulong fileoff; ulong filesz; ulong maxprot; ulong initprot; ulong nsect; ulong flags; } seg; struct { ulong symoff; ulong nsyms; ulong stroff; ulong strsize; } sym; }; struct Macho { int fd; uint cputype; uint subcputype; ulong filetype; ulong flags; MachoCmd *cmd; uint ncmd; u32int (*e4)(uchar*); int (*coreregs)(Macho*, uchar**); }; Macho *machoopen(char*); Macho *machoinit(int); void machoclose(Macho*); int coreregsmachopower(Macho*, uchar**);