ufile_ptr bfd_get_file_size (bfd *abfd) { if (abfd->my_archive != NULL && !bfd_is_thin_archive (abfd->my_archive)) return arelt_size (abfd); return bfd_get_size (abfd); }
/* initialize bincode */ bincode_t *initialize_bincode(const char *file) { bfd *abfd; bincode_t *bin; //char *target = "x86_64-unknown-linux-gnu"; char *target = "i686-pc-linux-gnu"; bfd_init(); if (!bfd_set_default_target(target)) { bs_dbgmsg(" (!) bfd_set_default_target()\n"); return NULL; } if ((abfd = bfd_openr(file, target)) == NULL) { bs_dbgmsg(" (!) bfd_openr(): %s\n", file); return NULL; } if (!bfd_check_format(abfd, bfd_object)) { bs_dbgmsg(" (!) bfd_check_format()\n"); bfd_close(abfd); return NULL; } if((bin = malloc(sizeof(bincode_t))) == NULL) { bs_errmsg(" (!) malloc(): bin\n"); exit(EXIT_FAILURE); } bin->filename = strdup(abfd->filename); bin->abfd = abfd; bin->filesize = bfd_get_size(abfd); bin->start_addr = bfd_get_start_address(abfd); init_disasm_info(bin->abfd, &bin->disasm_info); bin->disasm_info.application_data = bin; initialize_section(bin); return bin; }