static bfd_boolean bfd_mach_o_i386_mkobject (bfd *abfd) { bfd_mach_o_data_struct *mdata; if (!bfd_mach_o_mkobject_init (abfd)) return FALSE; mdata = bfd_mach_o_get_data (abfd); mdata->header.magic = BFD_MACH_O_MH_MAGIC; mdata->header.cputype = BFD_MACH_O_CPU_TYPE_I386; mdata->header.cpusubtype = BFD_MACH_O_CPU_SUBTYPE_X86_ALL; mdata->header.byteorder = BFD_ENDIAN_LITTLE; mdata->header.version = 1; return TRUE; }
static void dump_section_map (bfd *abfd) { bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd); unsigned int i; unsigned int sec_nbr = 0; fputs (_("Segments and Sections:\n"), stdout); fputs (_(" #: Segment name Section name Address\n"), stdout); for (i = 0; i < mdata->header.ncmds; i++) { bfd_mach_o_segment_command *seg; bfd_mach_o_section *sec; if (mdata->commands[i].type != BFD_MACH_O_LC_SEGMENT && mdata->commands[i].type != BFD_MACH_O_LC_SEGMENT_64) continue; seg = &mdata->commands[i].command.segment; printf ("[Segment %-16s ", seg->segname); printf_vma (seg->vmaddr); putchar ('-'); printf_vma (seg->vmaddr + seg->vmsize - 1); putchar (' '); putchar (seg->initprot & BFD_MACH_O_PROT_READ ? 'r' : '-'); putchar (seg->initprot & BFD_MACH_O_PROT_WRITE ? 'w' : '-'); putchar (seg->initprot & BFD_MACH_O_PROT_EXECUTE ? 'x' : '-'); printf ("]\n"); for (sec = seg->sect_head; sec != NULL; sec = sec->next) { printf ("%02u: %-16s %-16s ", ++sec_nbr, sec->segname, sec->sectname); printf_vma (sec->addr); putchar (' '); printf_vma (sec->size); printf (" %08lx\n", sec->flags); } } }
static void dump_header (bfd *abfd) { bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd); bfd_mach_o_header *h = &mdata->header; fputs (_("Mach-O header:\n"), stdout); printf (_(" magic : %08lx\n"), h->magic); printf (_(" cputype : %08lx (%s)\n"), h->cputype, bfd_mach_o_get_name (bfd_mach_o_cpu_name, h->cputype)); printf (_(" cpusubtype: %08lx\n"), h->cpusubtype); printf (_(" filetype : %08lx (%s)\n"), h->filetype, bfd_mach_o_get_name (bfd_mach_o_filetype_name, h->filetype)); printf (_(" ncmds : %08lx (%lu)\n"), h->ncmds, h->ncmds); printf (_(" sizeofcmds: %08lx\n"), h->sizeofcmds); printf (_(" flags : %08lx ("), h->flags); bfd_mach_o_print_flags (bfd_mach_o_header_flags_name, h->flags); fputs (_(")\n"), stdout); printf (_(" reserved : %08x\n"), h->reserved); }