bfd_boolean bfd_hash_table_init_n (struct bfd_hash_table *table, struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *, struct bfd_hash_table *, const char *), unsigned int entsize, unsigned int size) { unsigned int alloc; alloc = size * sizeof (struct bfd_hash_entry *); table->memory = (void *) objalloc_create (); if (table->memory == NULL) { bfd_set_error (bfd_error_no_memory); return FALSE; } table->table = (struct bfd_hash_entry **) objalloc_alloc ((struct objalloc *) table->memory, alloc); if (table->table == NULL) { bfd_set_error (bfd_error_no_memory); return FALSE; } memset ((void *) table->table, 0, alloc); table->size = size; table->entsize = entsize; table->count = 0; table->frozen = 0; table->newfunc = newfunc; return TRUE; }
bfd * _bfd_new_bfd (void) { bfd *nbfd; nbfd = (bfd *) bfd_zmalloc (sizeof (bfd)); if (nbfd == NULL) return NULL; if (bfd_use_reserved_id) { nbfd->id = --bfd_reserved_id_counter; --bfd_use_reserved_id; } else nbfd->id = bfd_id_counter++; nbfd->memory = objalloc_create (); if (nbfd->memory == NULL) { bfd_set_error (bfd_error_no_memory); free (nbfd); return NULL; } nbfd->arch_info = &bfd_default_arch_struct; nbfd->direction = no_direction; nbfd->iostream = NULL; nbfd->where = 0; if (!bfd_hash_table_init_n (& nbfd->section_htab, bfd_section_hash_newfunc, sizeof (struct section_hash_entry), 13)) { free (nbfd); return NULL; } nbfd->sections = NULL; nbfd->section_last = NULL; nbfd->format = bfd_unknown; nbfd->my_archive = NULL; nbfd->origin = 0; nbfd->opened_once = FALSE; nbfd->output_has_begun = FALSE; nbfd->section_count = 0; nbfd->usrdata = NULL; nbfd->cacheable = FALSE; nbfd->flags = BFD_NO_FLAGS; nbfd->mtime_set = FALSE; return nbfd; }
bfd * _bfd_new_bfd () { bfd *nbfd; nbfd = (bfd *) bfd_zmalloc ((bfd_size_type) sizeof (bfd)); if (nbfd == NULL) return NULL; nbfd->id = _bfd_id_counter++; nbfd->memory = (PTR) objalloc_create (); if (nbfd->memory == NULL) { bfd_set_error (bfd_error_no_memory); free (nbfd); return NULL; } nbfd->arch_info = &bfd_default_arch_struct; nbfd->direction = no_direction; nbfd->iostream = NULL; nbfd->where = 0; if (!bfd_hash_table_init_n (&nbfd->section_htab, bfd_section_hash_newfunc, 251)) { free (nbfd); return NULL; } nbfd->sections = (asection *) NULL; nbfd->section_tail = &nbfd->sections; nbfd->format = bfd_unknown; nbfd->my_archive = (bfd *) NULL; nbfd->origin = 0; nbfd->opened_once = FALSE; nbfd->output_has_begun = FALSE; nbfd->section_count = 0; nbfd->usrdata = (PTR) NULL; nbfd->cacheable = FALSE; nbfd->flags = BFD_NO_FLAGS; nbfd->mtime_set = FALSE; return nbfd; }
bfd * _bfd_new_bfd (void) { bfd *nbfd; nbfd = (bfd *) bfd_zmalloc (sizeof (bfd)); if (nbfd == NULL) return NULL; if (bfd_use_reserved_id) { nbfd->id = --bfd_reserved_id_counter; --bfd_use_reserved_id; } else nbfd->id = bfd_id_counter++; nbfd->memory = objalloc_create (); if (nbfd->memory == NULL) { bfd_set_error (bfd_error_no_memory); free (nbfd); return NULL; } nbfd->arch_info = &bfd_default_arch_struct; if (!bfd_hash_table_init_n (& nbfd->section_htab, bfd_section_hash_newfunc, sizeof (struct section_hash_entry), 13)) { free (nbfd); return NULL; } return nbfd; }