unsigned int space_index, i;
unsigned int total_subspaces = 0;
asection **subspace_sections = NULL;
unsigned int space_index, i;
unsigned int total_subspaces = 0;
asection **subspace_sections = NULL;
/* Read in the next subspace. */
amt = sizeof ext_subspace;
if (bfd_bread (&ext_subspace, amt, abfd) != amt)
goto error_return;
/* Read in the next subspace. */
amt = sizeof ext_subspace;
if (bfd_bread (&ext_subspace, amt, abfd) != amt)
goto error_return;
memcpy (sorted_syms, syms, num_syms * sizeof (asymbol *));
qsort (sorted_syms, num_syms, sizeof (asymbol *), compare_syms);
obj_som_sorted_syms (abfd) = sorted_syms;
memcpy (sorted_syms, syms, num_syms * sizeof (asymbol *));
qsort (sorted_syms, num_syms, sizeof (asymbol *), compare_syms);
obj_som_sorted_syms (abfd) = sorted_syms;
- if (2 * tmp_space_size < length + 5)
- tmp_space_size = length + 5;
- else
- tmp_space_size = 2 * tmp_space_size;
- tmp_space = alloca (tmp_space_size);
+ if (2 * tmp_space_size < length + 5)
+ tmp_space_size = length + 5;
+ else
+ tmp_space_size = 2 * tmp_space_size;
+ tmp_space = xrealloc (tmp_space, tmp_space_size);
- if (2 * tmp_space_size < 5 + length)
- tmp_space_size = 5 + length;
- else
- tmp_space_size = 2 * tmp_space_size;
- tmp_space = alloca (tmp_space_size);
+ if (2 * tmp_space_size < 5 + length)
+ tmp_space_size = 5 + length;
+ else
+ tmp_space_size = 2 * tmp_space_size;
+ tmp_space = xrealloc (tmp_space, tmp_space_size);
- if (2 * tmp_space_size < 5 + length)
- tmp_space_size = 5 + length;
- else
- tmp_space_size = 2 * tmp_space_size;
- tmp_space = alloca (tmp_space_size);
+ if (2 * tmp_space_size < 5 + length)
+ tmp_space_size = 5 + length;
+ else
+ tmp_space_size = 2 * tmp_space_size;
+ tmp_space = xrealloc (tmp_space, tmp_space_size);
- symtab_size = num_syms;
- symtab_size *= sizeof (struct som_external_symbol_dictionary_record);
- som_symtab = bfd_zmalloc (symtab_size);
- if (som_symtab == NULL && symtab_size != 0)
+ som_symtab
+ = bfd_zmalloc2 (num_syms,
+ sizeof (struct som_external_symbol_dictionary_record));
+ if (som_symtab == NULL && num_syms != 0)
By the time we get here, the index has already been
computed and stored into the name field in the BFD symbol. */
bfd_putb32 (som_symbol_data (bfd_syms[i])->stringtab_offset,
By the time we get here, the index has already been
computed and stored into the name field in the BFD symbol. */
bfd_putb32 (som_symbol_data (bfd_syms[i])->stringtab_offset,
/* Derive SOM information from the BFD symbol. */
som_bfd_derive_misc_symbol_info (abfd, bfd_syms[i], &info);
/* Now use it. */
flags = (info.symbol_type << SOM_SYMBOL_TYPE_SH)
/* Derive SOM information from the BFD symbol. */
som_bfd_derive_misc_symbol_info (abfd, bfd_syms[i], &info);
/* Now use it. */
flags = (info.symbol_type << SOM_SYMBOL_TYPE_SH)
- | (info.symbol_scope << SOM_SYMBOL_SCOPE_SH)
- | (info.arg_reloc << SOM_SYMBOL_ARG_RELOC_SH)
- | (3 << SOM_SYMBOL_XLEAST_SH)
- | (info.secondary_def ? SOM_SYMBOL_SECONDARY_DEF : 0)
- | (info.is_common ? SOM_SYMBOL_IS_COMMON : 0)
- | (info.dup_common ? SOM_SYMBOL_DUP_COMMON : 0);
+ | (info.symbol_scope << SOM_SYMBOL_SCOPE_SH)
+ | (info.arg_reloc << SOM_SYMBOL_ARG_RELOC_SH)
+ | (3 << SOM_SYMBOL_XLEAST_SH)
+ | (info.secondary_def ? SOM_SYMBOL_SECONDARY_DEF : 0)
+ | (info.is_common ? SOM_SYMBOL_IS_COMMON : 0)
+ | (info.dup_common ? SOM_SYMBOL_DUP_COMMON : 0);
fprintf (f, " length %#x\n", auxhdr->length);
/* Note that, depending on the HP-UX version, the following fields can be
fprintf (f, " length %#x\n", auxhdr->length);
/* Note that, depending on the HP-UX version, the following fields can be
fprintf (f, " text size %#lx\n", (long) exec_header->exec_tsize);
fprintf (f, " text memory offset %#lx\n", (long) exec_header->exec_tmem);
fprintf (f, " text size %#lx\n", (long) exec_header->exec_tsize);
fprintf (f, " text memory offset %#lx\n", (long) exec_header->exec_tmem);
- amt = lst_header->module_count * sizeof (struct som_external_som_entry);
- som_dict = bfd_malloc (amt);
- if (som_dict == NULL && amt != 0)
+ som_dict = bfd_malloc2 (lst_header->module_count,
+ sizeof (struct som_external_som_entry));
+ if (som_dict == NULL && lst_header->module_count != 0)
index can point *anywhere* in the archive to save space, so just
using the string table would not be safe. */
if (bfd_seek (abfd, (lst_filepos + string_loc
index can point *anywhere* in the archive to save space, so just
using the string table would not be safe. */
if (bfd_seek (abfd, (lst_filepos + string_loc
/* Get back to the start of the library symbol table. */
if (bfd_seek (abfd, (ardata->first_file_filepos - parsed_size
+ sizeof (struct som_external_lst_header)),
/* Get back to the start of the library symbol table. */
if (bfd_seek (abfd, (ardata->first_file_filepos - parsed_size
+ sizeof (struct som_external_lst_header)),
- flags = 0;
- if (info.secondary_def)
- flags |= LST_SYMBOL_SECONDARY_DEF;
- flags |= info.symbol_type << LST_SYMBOL_SYMBOL_TYPE_SH;
- flags |= info.symbol_scope << LST_SYMBOL_SYMBOL_SCOPE_SH;
- if (bfd_is_com_section (sym->symbol.section))
- flags |= LST_SYMBOL_IS_COMMON;
- if (info.dup_common)
- flags |= LST_SYMBOL_DUP_COMMON;
- flags |= 3 << LST_SYMBOL_XLEAST_SH;
- flags |= info.arg_reloc << LST_SYMBOL_ARG_RELOC_SH;
- bfd_putb32 (flags, curr_lst_sym->flags);
- bfd_putb32 (p - strings + 4, curr_lst_sym->name);
- bfd_putb32 (0, curr_lst_sym->qualifier_name);
- bfd_putb32 (info.symbol_info, curr_lst_sym->symbol_info);
- bfd_putb32 (info.symbol_value | info.priv_level,
- curr_lst_sym->symbol_value);
- bfd_putb32 (0, curr_lst_sym->symbol_descriptor);
- curr_lst_sym->reserved = 0;
- bfd_putb32 (som_index, curr_lst_sym->som_index);
- bfd_putb32 (symbol_key, curr_lst_sym->symbol_key);
- bfd_putb32 (0, curr_lst_sym->next_entry);
+ flags = 0;
+ if (info.secondary_def)
+ flags |= LST_SYMBOL_SECONDARY_DEF;
+ flags |= info.symbol_type << LST_SYMBOL_SYMBOL_TYPE_SH;
+ flags |= info.symbol_scope << LST_SYMBOL_SYMBOL_SCOPE_SH;
+ if (bfd_is_com_section (sym->symbol.section))
+ flags |= LST_SYMBOL_IS_COMMON;
+ if (info.dup_common)
+ flags |= LST_SYMBOL_DUP_COMMON;
+ flags |= 3 << LST_SYMBOL_XLEAST_SH;
+ flags |= info.arg_reloc << LST_SYMBOL_ARG_RELOC_SH;
+ bfd_putb32 (flags, curr_lst_sym->flags);
+ bfd_putb32 (p - strings + 4, curr_lst_sym->name);
+ bfd_putb32 (0, curr_lst_sym->qualifier_name);
+ bfd_putb32 (info.symbol_info, curr_lst_sym->symbol_info);
+ bfd_putb32 (info.symbol_value | info.priv_level,
+ curr_lst_sym->symbol_value);
+ bfd_putb32 (0, curr_lst_sym->symbol_descriptor);
+ curr_lst_sym->reserved = 0;
+ bfd_putb32 (som_index, curr_lst_sym->som_index);
+ bfd_putb32 (symbol_key, curr_lst_sym->symbol_key);
+ bfd_putb32 (0, curr_lst_sym->next_entry);
- symbol_pos =
- (curr_lst_sym - lst_syms)
- * sizeof (struct som_external_lst_symbol_record)
- + hash_size * 4
- + module_count * sizeof (struct som_external_som_entry)
- + sizeof (struct som_external_lst_header);
- last = last_hash_entry[symbol_key % hash_size];
+ symbol_pos =
+ (curr_lst_sym - lst_syms)
+ * sizeof (struct som_external_lst_symbol_record)
+ + hash_size * 4
+ + module_count * sizeof (struct som_external_som_entry)
+ + sizeof (struct som_external_lst_header);
+ last = last_hash_entry[symbol_key % hash_size];
sprintf (hdr.ar_name, "/ ");
_bfd_ar_spacepad (hdr.ar_date, sizeof (hdr.ar_date), "%-12ld",
sprintf (hdr.ar_name, "/ ");
_bfd_ar_spacepad (hdr.ar_date, sizeof (hdr.ar_date), "%-12ld",
- /* Free the native string and symbol tables. */
- FREE (obj_som_symtab (abfd));
- FREE (obj_som_stringtab (abfd));
- for (o = abfd->sections; o != NULL; o = o->next)
- {
- /* Free the native relocations. */
- o->reloc_count = (unsigned) -1;
- FREE (som_section_data (o)->reloc_stream);
- /* Do not free the generic relocations as they are objalloc'ed. */
- }
+ /* Free the native string and symbol tables. */
+ FREE (obj_som_symtab (abfd));
+ FREE (obj_som_stringtab (abfd));
+ for (o = abfd->sections; o != NULL; o = o->next)
+ {
+ /* Free the native relocations. */
+ o->reloc_count = (unsigned) -1;
+ FREE (som_section_data (o)->reloc_stream);
+ /* Do not free the generic relocations as they are objalloc'ed. */
+ }
-#define som_close_and_cleanup som_bfd_free_cached_info
-#define som_read_ar_hdr _bfd_generic_read_ar_hdr
-#define som_write_ar_hdr _bfd_generic_write_ar_hdr
-#define som_openr_next_archived_file bfd_generic_openr_next_archived_file
-#define som_get_elt_at_index _bfd_generic_get_elt_at_index
-#define som_generic_stat_arch_elt bfd_generic_stat_arch_elt
-#define som_truncate_arname bfd_bsd_truncate_arname
-#define som_slurp_extended_name_table _bfd_slurp_extended_name_table
-#define som_construct_extended_name_table _bfd_archive_coff_construct_extended_name_table
-#define som_update_armap_timestamp bfd_true
-#define som_bfd_is_target_special_symbol ((bfd_boolean (*) (bfd *, asymbol *)) bfd_false)
-#define som_get_lineno _bfd_nosymbols_get_lineno
-#define som_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol
-#define som_read_minisymbols _bfd_generic_read_minisymbols
-#define som_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol
-#define som_get_section_contents_in_window _bfd_generic_get_section_contents_in_window
-#define som_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents
-#define som_bfd_relax_section bfd_generic_relax_section
-#define som_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
-#define som_bfd_link_add_symbols _bfd_generic_link_add_symbols
-#define som_bfd_link_just_syms _bfd_generic_link_just_syms
+#define som_close_and_cleanup som_bfd_free_cached_info
+#define som_read_ar_hdr _bfd_generic_read_ar_hdr
+#define som_write_ar_hdr _bfd_generic_write_ar_hdr
+#define som_openr_next_archived_file bfd_generic_openr_next_archived_file
+#define som_get_elt_at_index _bfd_generic_get_elt_at_index
+#define som_generic_stat_arch_elt bfd_generic_stat_arch_elt
+#define som_truncate_arname bfd_bsd_truncate_arname
+#define som_slurp_extended_name_table _bfd_slurp_extended_name_table
+#define som_construct_extended_name_table _bfd_archive_coff_construct_extended_name_table
+#define som_update_armap_timestamp _bfd_bool_bfd_true
+#define som_bfd_is_target_special_symbol _bfd_bool_bfd_asymbol_false
+#define som_get_lineno _bfd_nosymbols_get_lineno
+#define som_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol
+#define som_read_minisymbols _bfd_generic_read_minisymbols
+#define som_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol
+#define som_get_section_contents_in_window _bfd_generic_get_section_contents_in_window
+#define som_bfd_get_relocated_section_contents bfd_generic_get_relocated_section_contents
+#define som_bfd_relax_section bfd_generic_relax_section
+#define som_bfd_link_hash_table_create _bfd_generic_link_hash_table_create
+#define som_bfd_link_add_symbols _bfd_generic_link_add_symbols
+#define som_bfd_link_just_syms _bfd_generic_link_just_syms
-#define som_bfd_final_link _bfd_generic_final_link
-#define som_bfd_gc_sections bfd_generic_gc_sections
-#define som_bfd_lookup_section_flags bfd_generic_lookup_section_flags
-#define som_bfd_merge_sections bfd_generic_merge_sections
-#define som_bfd_is_group_section bfd_generic_is_group_section
-#define som_bfd_discard_group bfd_generic_discard_group
-#define som_section_already_linked _bfd_generic_section_already_linked
-#define som_bfd_define_common_symbol bfd_generic_define_common_symbol
+#define som_bfd_final_link _bfd_generic_final_link
+#define som_bfd_gc_sections bfd_generic_gc_sections
+#define som_bfd_lookup_section_flags bfd_generic_lookup_section_flags
+#define som_bfd_merge_sections bfd_generic_merge_sections
+#define som_bfd_is_group_section bfd_generic_is_group_section
+#define som_bfd_group_name bfd_generic_group_name
+#define som_bfd_discard_group bfd_generic_discard_group
+#define som_section_already_linked _bfd_generic_section_already_linked
+#define som_bfd_define_common_symbol bfd_generic_define_common_symbol
+#define som_bfd_link_hide_symbol _bfd_generic_link_hide_symbol
+#define som_bfd_define_start_stop bfd_generic_define_start_stop
#define som_bfd_merge_private_bfd_data _bfd_generic_bfd_merge_private_bfd_data
#define som_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data
#define som_bfd_set_private_flags _bfd_generic_bfd_set_private_flags
#define som_find_inliner_info _bfd_nosymbols_find_inliner_info
#define som_bfd_merge_private_bfd_data _bfd_generic_bfd_merge_private_bfd_data
#define som_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data
#define som_bfd_set_private_flags _bfd_generic_bfd_set_private_flags
#define som_find_inliner_info _bfd_nosymbols_find_inliner_info