X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Fsom.c;h=c1195c9a10ad9e53c7372405ae650e096b562710;hb=3c9b82baee30a1d3cfeb419643c6363dc9267208;hp=53a05b75d7d9638400f3b050d2df7c453e0cf7c0;hpb=e6dc21b6954c484be22a379b9c12c72767d3a774;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/som.c b/bfd/som.c index 53a05b75d7..c1195c9a10 100644 --- a/bfd/som.c +++ b/bfd/som.c @@ -1,6 +1,6 @@ /* bfd back-end for HP PA-RISC SOM objects. Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003, 2004 + 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Contributed by the Center for Software Science at the @@ -20,8 +20,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA + 02110-1301, USA. */ #include "alloca-conf.h" #include "bfd.h" @@ -38,6 +38,16 @@ #include #include +static bfd_reloc_status_type hppa_som_reloc + (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **); +static bfd_boolean som_mkobject (bfd *); +static bfd_boolean som_is_space (asection *); +static bfd_boolean som_is_subspace (asection *); +static int compare_subspaces (const void *, const void *); +static unsigned long som_compute_checksum (bfd *); +static bfd_boolean som_build_and_write_symbol_table (bfd *); +static unsigned int som_slurp_symbol_table (bfd *); + /* Magic not defined in standard HP-UX header files until 8.0. */ #ifndef CPU_PA_RISC1_0 @@ -111,7 +121,8 @@ Note one side effect of using a R_PREV_FIXUP is the relocation that is being repeated moves to the front of the queue. */ -struct reloc_queue { +struct reloc_queue +{ unsigned char *reloc; unsigned int size; } reloc_queue[4]; @@ -119,7 +130,8 @@ struct reloc_queue { /* This fully describes the symbol types which may be attached to an EXPORT or IMPORT directive. Only SOM uses this formation (ELF has no need for it). */ -typedef enum { +typedef enum +{ SYMBOL_TYPE_UNKNOWN, SYMBOL_TYPE_ABSOLUTE, SYMBOL_TYPE_CODE, @@ -131,14 +143,16 @@ typedef enum { SYMBOL_TYPE_SEC_PROG, } pa_symbol_type; -struct section_to_type { +struct section_to_type +{ char *section; char type; }; /* Assorted symbol information that needs to be derived from the BFD symbol and/or the BFD backend private symbol data. */ -struct som_misc_symbol_info { +struct som_misc_symbol_info +{ unsigned int symbol_type; unsigned int symbol_scope; unsigned int arg_reloc; @@ -151,161 +165,14 @@ struct som_misc_symbol_info { unsigned int dup_common; }; -/* Forward declarations. */ - -static bfd_boolean som_mkobject - PARAMS ((bfd *)); -static const bfd_target * som_object_setup - PARAMS ((bfd *, struct header *, struct som_exec_auxhdr *, unsigned long)); -static bfd_boolean setup_sections - PARAMS ((bfd *, struct header *, unsigned long)); -static const bfd_target * som_object_p - PARAMS ((bfd *)); -static bfd_boolean som_write_object_contents - PARAMS ((bfd *)); -static bfd_boolean som_slurp_string_table - PARAMS ((bfd *)); -static unsigned int som_slurp_symbol_table - PARAMS ((bfd *)); -static long som_get_symtab_upper_bound - PARAMS ((bfd *)); -static long som_canonicalize_reloc - PARAMS ((bfd *, sec_ptr, arelent **, asymbol **)); -static long som_get_reloc_upper_bound - PARAMS ((bfd *, sec_ptr)); -static unsigned int som_set_reloc_info - PARAMS ((unsigned char *, unsigned int, arelent *, asection *, - asymbol **, bfd_boolean)); -static bfd_boolean som_slurp_reloc_table - PARAMS ((bfd *, asection *, asymbol **, bfd_boolean)); -static long som_canonicalize_symtab - PARAMS ((bfd *, asymbol **)); -static asymbol * som_make_empty_symbol - PARAMS ((bfd *)); -static void som_print_symbol - PARAMS ((bfd *, PTR, asymbol *, bfd_print_symbol_type)); -static bfd_boolean som_new_section_hook - PARAMS ((bfd *, asection *)); -static bfd_boolean som_bfd_copy_private_symbol_data - PARAMS ((bfd *, asymbol *, bfd *, asymbol *)); -static bfd_boolean som_bfd_copy_private_section_data - PARAMS ((bfd *, asection *, bfd *, asection *)); -static bfd_boolean som_bfd_copy_private_bfd_data - PARAMS ((bfd *, bfd *)); -#define som_bfd_copy_private_header_data \ - _bfd_generic_bfd_copy_private_header_data -#define som_bfd_merge_private_bfd_data _bfd_generic_bfd_merge_private_bfd_data -#define som_bfd_set_private_flags _bfd_generic_bfd_set_private_flags -static bfd_boolean som_bfd_print_private_bfd_data - (bfd *, void *); -static bfd_boolean som_bfd_is_local_label_name - PARAMS ((bfd *, const char *)); -static bfd_boolean som_set_section_contents - PARAMS ((bfd *, sec_ptr, const PTR, file_ptr, bfd_size_type)); -static bfd_boolean som_get_section_contents - PARAMS ((bfd *, sec_ptr, PTR, file_ptr, bfd_size_type)); -static bfd_boolean som_set_arch_mach - PARAMS ((bfd *, enum bfd_architecture, unsigned long)); -static bfd_boolean som_find_nearest_line - PARAMS ((bfd *, asection *, asymbol **, bfd_vma, const char **, - const char **, unsigned int *)); -static void som_get_symbol_info - PARAMS ((bfd *, asymbol *, symbol_info *)); -static asection * bfd_section_from_som_symbol - PARAMS ((bfd *, struct symbol_dictionary_record *)); -static int exact_log2 - PARAMS ((unsigned int)); -static bfd_reloc_status_type hppa_som_reloc - PARAMS ((bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **)); -static void som_initialize_reloc_queue - PARAMS ((struct reloc_queue *)); -static void som_reloc_queue_insert - PARAMS ((unsigned char *, unsigned int, struct reloc_queue *)); -static void som_reloc_queue_fix - PARAMS ((struct reloc_queue *, unsigned int)); -static int som_reloc_queue_find - PARAMS ((unsigned char *, unsigned int, struct reloc_queue *)); -static unsigned char * try_prev_fixup - PARAMS ((bfd *, int *, unsigned char *, unsigned int, struct reloc_queue *)); -static unsigned char * som_reloc_skip - PARAMS ((bfd *, unsigned int, unsigned char *, unsigned int *, - struct reloc_queue *)); -static unsigned char * som_reloc_addend - PARAMS ((bfd *, bfd_vma, unsigned char *, unsigned int *, - struct reloc_queue *)); -static unsigned char * som_reloc_call - PARAMS ((bfd *, unsigned char *, unsigned int *, arelent *, int, - struct reloc_queue *)); -static unsigned long som_count_spaces - PARAMS ((bfd *)); -static unsigned long som_count_subspaces - PARAMS ((bfd *)); -static int compare_syms - PARAMS ((const void *, const void *)); -static int compare_subspaces - PARAMS ((const void *, const void *)); -static unsigned long som_compute_checksum - PARAMS ((bfd *)); -static bfd_boolean som_prep_headers - PARAMS ((bfd *)); -static int som_sizeof_headers - PARAMS ((bfd *, bfd_boolean)); -static bfd_boolean som_finish_writing - PARAMS ((bfd *)); -static bfd_boolean som_build_and_write_symbol_table - PARAMS ((bfd *)); -static void som_prep_for_fixups - PARAMS ((bfd *, asymbol **, unsigned long)); -static bfd_boolean som_write_fixups - PARAMS ((bfd *, unsigned long, unsigned int *)); -static bfd_boolean som_write_space_strings - PARAMS ((bfd *, unsigned long, unsigned int *)); -static bfd_boolean som_write_symbol_strings - PARAMS ((bfd *, unsigned long, asymbol **, unsigned int, unsigned *, - COMPUNIT *)); -static bfd_boolean som_begin_writing - PARAMS ((bfd *)); -static reloc_howto_type * som_bfd_reloc_type_lookup - PARAMS ((bfd *, bfd_reloc_code_real_type)); -static char som_section_type - PARAMS ((const char *)); -static int som_decode_symclass - PARAMS ((asymbol *)); -static bfd_boolean som_bfd_count_ar_symbols - PARAMS ((bfd *, struct lst_header *, symindex *)); -static bfd_boolean som_bfd_fill_in_ar_symbols - PARAMS ((bfd *, struct lst_header *, carsym **)); -static bfd_boolean som_slurp_armap - PARAMS ((bfd *)); -static bfd_boolean som_write_armap - PARAMS ((bfd *, unsigned int, struct orl *, unsigned int, int)); -static void som_bfd_derive_misc_symbol_info - PARAMS ((bfd *, asymbol *, struct som_misc_symbol_info *)); -static bfd_boolean som_bfd_prep_for_ar_write - PARAMS ((bfd *, unsigned int *, unsigned int *)); -static unsigned int som_bfd_ar_symbol_hash - PARAMS ((asymbol *)); -static bfd_boolean som_bfd_ar_write_symbol_stuff - PARAMS ((bfd *, unsigned int, unsigned int, struct lst_header, - unsigned int)); -static bfd_boolean som_is_space - PARAMS ((asection *)); -static bfd_boolean som_is_subspace - PARAMS ((asection *)); -static bfd_boolean som_is_container - PARAMS ((asection *, asection *)); -static bfd_boolean som_bfd_free_cached_info - PARAMS ((bfd *)); -static bfd_boolean som_bfd_link_split_section - PARAMS ((bfd *, asection *)); - /* Map SOM section names to POSIX/BSD single-character symbol types. This table includes all the standard subspaces as defined in the current "PRO ABI for PA-RISC Systems", $UNWIND$ which for some reason was left out, and sections specific to embedded stabs. */ -static const struct section_to_type stt[] = { +static const struct section_to_type stt[] = +{ {"$TEXT$", 't'}, {"$SHLIB_INFO$", 't'}, {"$MILLICODE$", 't'}, @@ -409,13 +276,15 @@ static const struct section_to_type stt[] = { addil foo-$global$-0x1234 would use an override for "0x1234" rather than storing it into the addil itself. */ -struct fixup_format { +struct fixup_format +{ int D; const char *format; }; -static const struct fixup_format som_fixup_formats[256] = { - /* R_NO_RELOCATION */ +static const struct fixup_format som_fixup_formats[256] = +{ + /* R_NO_RELOCATION. */ { 0, "LD1+4*=" }, /* 0x00 */ { 1, "LD1+4*=" }, /* 0x01 */ { 2, "LD1+4*=" }, /* 0x02 */ @@ -448,30 +317,30 @@ static const struct fixup_format som_fixup_formats[256] = { { 1, "LD16addend); int rtn_bits = arg_bits & 0x3; @@ -1439,8 +1306,7 @@ som_reloc_call (abfd, p, subspace_reloc_sizep, bfd_reloc, sym_num, queue) if X is a power of 2. Otherwise, returns -1. */ static int -exact_log2 (x) - unsigned int x; +exact_log2 (unsigned int x) { int log = 0; @@ -1454,21 +1320,17 @@ exact_log2 (x) } static bfd_reloc_status_type -hppa_som_reloc (abfd, reloc_entry, symbol_in, data, - input_section, output_bfd, error_message) - bfd *abfd ATTRIBUTE_UNUSED; - arelent *reloc_entry; - asymbol *symbol_in ATTRIBUTE_UNUSED; - PTR data ATTRIBUTE_UNUSED; - asection *input_section; - bfd *output_bfd; - char **error_message ATTRIBUTE_UNUSED; +hppa_som_reloc (bfd *abfd ATTRIBUTE_UNUSED, + arelent *reloc_entry, + asymbol *symbol_in ATTRIBUTE_UNUSED, + void *data ATTRIBUTE_UNUSED, + asection *input_section, + bfd *output_bfd, + char **error_message ATTRIBUTE_UNUSED) { if (output_bfd) - { - reloc_entry->address += input_section->output_offset; - return bfd_reloc_ok; - } + reloc_entry->address += input_section->output_offset; + return bfd_reloc_ok; } @@ -1476,18 +1338,17 @@ hppa_som_reloc (abfd, reloc_entry, symbol_in, data, and a field selector, return one or more appropriate SOM relocations. */ int ** -hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym) - bfd *abfd; - int base_type; - int format; - enum hppa_reloc_field_selector_type_alt field; - int sym_diff; - asymbol *sym; +hppa_som_gen_reloc_type (bfd *abfd, + int base_type, + int format, + enum hppa_reloc_field_selector_type_alt field, + int sym_diff, + asymbol *sym) { int *final_type, **final_types; - final_types = (int **) bfd_alloc (abfd, (bfd_size_type) sizeof (int *) * 6); - final_type = (int *) bfd_alloc (abfd, (bfd_size_type) sizeof (int)); + final_types = bfd_alloc (abfd, (bfd_size_type) sizeof (int *) * 6); + final_type = bfd_alloc (abfd, (bfd_size_type) sizeof (int)); if (!final_types || !final_type) return NULL; @@ -1511,7 +1372,7 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym) case e_tsel: case e_ltsel: case e_rtsel: - final_types[0] = (int *) bfd_alloc (abfd, (bfd_size_type) sizeof (int)); + final_types[0] = bfd_alloc (abfd, (bfd_size_type) sizeof (int)); if (!final_types[0]) return NULL; if (field == e_tsel) @@ -1527,7 +1388,7 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym) case e_lssel: case e_rssel: - final_types[0] = (int *) bfd_alloc (abfd, (bfd_size_type) sizeof (int)); + final_types[0] = bfd_alloc (abfd, (bfd_size_type) sizeof (int)); if (!final_types[0]) return NULL; *final_types[0] = R_S_MODE; @@ -1538,7 +1399,7 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym) case e_lsel: case e_rsel: - final_types[0] = (int *) bfd_alloc (abfd, (bfd_size_type) sizeof (int)); + final_types[0] = bfd_alloc (abfd, (bfd_size_type) sizeof (int)); if (!final_types[0]) return NULL; *final_types[0] = R_N_MODE; @@ -1549,7 +1410,7 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym) case e_ldsel: case e_rdsel: - final_types[0] = (int *) bfd_alloc (abfd, (bfd_size_type) sizeof (int)); + final_types[0] = bfd_alloc (abfd, (bfd_size_type) sizeof (int)); if (!final_types[0]) return NULL; *final_types[0] = R_D_MODE; @@ -1560,7 +1421,7 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym) case e_lrsel: case e_rrsel: - final_types[0] = (int *) bfd_alloc (abfd, (bfd_size_type) sizeof (int)); + final_types[0] = bfd_alloc (abfd, (bfd_size_type) sizeof (int)); if (!final_types[0]) return NULL; *final_types[0] = R_R_MODE; @@ -1570,7 +1431,7 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym) break; case e_nsel: - final_types[0] = (int *) bfd_alloc (abfd, (bfd_size_type) sizeof (int)); + final_types[0] = bfd_alloc (abfd, (bfd_size_type) sizeof (int)); if (!final_types[0]) return NULL; *final_types[0] = R_N1SEL; @@ -1581,11 +1442,11 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym) case e_nlsel: case e_nlrsel: - final_types[0] = (int *) bfd_alloc (abfd, (bfd_size_type) sizeof (int)); + final_types[0] = bfd_alloc (abfd, (bfd_size_type) sizeof (int)); if (!final_types[0]) return NULL; *final_types[0] = R_N0SEL; - final_types[1] = (int *) bfd_alloc (abfd, (bfd_size_type) sizeof (int)); + final_types[1] = bfd_alloc (abfd, (bfd_size_type) sizeof (int)); if (!final_types[1]) return NULL; if (field == e_nlsel) @@ -1610,10 +1471,11 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym) if (sym_diff) { bfd_size_type amt = sizeof (int); - final_types[0] = (int *) bfd_alloc (abfd, amt); - final_types[1] = (int *) bfd_alloc (abfd, amt); - final_types[2] = (int *) bfd_alloc (abfd, amt); - final_types[3] = (int *) bfd_alloc (abfd, amt); + + final_types[0] = bfd_alloc (abfd, amt); + final_types[1] = bfd_alloc (abfd, amt); + final_types[2] = bfd_alloc (abfd, amt); + final_types[3] = bfd_alloc (abfd, amt); if (!final_types[0] || !final_types[1] || !final_types[2]) return NULL; if (field == e_fsel) @@ -1691,10 +1553,11 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym) if (sym_diff) { bfd_size_type amt = sizeof (int); - final_types[0] = (int *) bfd_alloc (abfd, amt); - final_types[1] = (int *) bfd_alloc (abfd, amt); - final_types[2] = (int *) bfd_alloc (abfd, amt); - final_types[3] = (int *) bfd_alloc (abfd, amt); + + final_types[0] = bfd_alloc (abfd, amt); + final_types[1] = bfd_alloc (abfd, amt); + final_types[2] = bfd_alloc (abfd, amt); + final_types[3] = bfd_alloc (abfd, amt); if (!final_types[0] || !final_types[1] || !final_types[2]) return NULL; if (field == e_fsel) @@ -1729,7 +1592,8 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym) mode selector, then the pcrel relocation. Redundant selectors will be eliminated as the relocs are sized and emitted. */ bfd_size_type amt = sizeof (int); - final_types[0] = (int *) bfd_alloc (abfd, amt); + + final_types[0] = bfd_alloc (abfd, amt); if (!final_types[0]) return NULL; if (format == 17) @@ -1750,9 +1614,8 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym) howto table. */ static reloc_howto_type * -som_bfd_reloc_type_lookup (abfd, code) - bfd *abfd ATTRIBUTE_UNUSED; - bfd_reloc_code_real_type code; +som_bfd_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED, + bfd_reloc_code_real_type code) { if ((int) code < (int) R_NO_RELOCATION + 255) { @@ -1760,24 +1623,23 @@ som_bfd_reloc_type_lookup (abfd, code) return &som_hppa_howto_table[(int) code]; } - return (reloc_howto_type *) 0; + return NULL; } /* Perform some initialization for an object. Save results of this initialization in the BFD. */ static const bfd_target * -som_object_setup (abfd, file_hdrp, aux_hdrp, current_offset) - bfd *abfd; - struct header *file_hdrp; - struct som_exec_auxhdr *aux_hdrp; - unsigned long current_offset; +som_object_setup (bfd *abfd, + struct header *file_hdrp, + struct som_exec_auxhdr *aux_hdrp, + unsigned long current_offset) { asection *section; /* som_mkobject will set bfd_error if som_mkobject fails. */ if (! som_mkobject (abfd)) - return 0; + return NULL; /* Set BFD flags based on what information is available in the SOM. */ abfd->flags = BFD_NO_FLAGS; @@ -1815,8 +1677,7 @@ som_object_setup (abfd, file_hdrp, aux_hdrp, current_offset) obj_som_exec_hdr (abfd) = aux_hdrp; /* Allocate space to hold the saved exec header information. */ - obj_som_exec_data (abfd) = (struct som_exec_data *) - bfd_zalloc (abfd, (bfd_size_type) sizeof (struct som_exec_data)); + obj_som_exec_data (abfd) = bfd_zalloc (abfd, (bfd_size_type) sizeof (struct som_exec_data)); if (obj_som_exec_data (abfd) == NULL) return NULL; @@ -1872,8 +1733,8 @@ som_object_setup (abfd, file_hdrp, aux_hdrp, current_offset) /* Initialize the saved symbol table and string table to NULL. Save important offsets and sizes from the SOM header into the BFD. */ - obj_som_stringtab (abfd) = (char *) NULL; - obj_som_symtab (abfd) = (som_symbol_type *) NULL; + obj_som_stringtab (abfd) = NULL; + obj_som_symtab (abfd) = NULL; obj_som_sorted_syms (abfd) = NULL; obj_som_stringtab_size (abfd) = file_hdrp->symbol_strings_size; obj_som_sym_filepos (abfd) = file_hdrp->symbol_location + current_offset; @@ -1893,10 +1754,9 @@ som_object_setup (abfd, file_hdrp, aux_hdrp, current_offset) associated subspaces. */ static bfd_boolean -setup_sections (abfd, file_hdr, current_offset) - bfd *abfd; - struct header *file_hdr; - unsigned long current_offset; +setup_sections (bfd *abfd, + struct header *file_hdr, + unsigned long current_offset) { char *space_strings; unsigned int space_index, i; @@ -1906,7 +1766,6 @@ setup_sections (abfd, file_hdr, current_offset) bfd_size_type amt; /* First, read in space names. */ - amt = file_hdr->space_strings_size; space_strings = bfd_malloc (amt); if (!space_strings && amt != 0) @@ -2151,7 +2010,7 @@ setup_sections (abfd, file_hdr, current_offset) a target index to each subspace. */ amt = total_subspaces; amt *= sizeof (asection *); - subspace_sections = (asection **) bfd_malloc (amt); + subspace_sections = bfd_malloc (amt); if (subspace_sections == NULL) goto error_return; @@ -2191,8 +2050,7 @@ setup_sections (abfd, file_hdr, current_offset) /* Read in a SOM object and make it into a BFD. */ static const bfd_target * -som_object_p (abfd) - bfd *abfd; +som_object_p (bfd *abfd) { struct header file_hdr; struct som_exec_auxhdr *aux_hdr_ptr = NULL; @@ -2203,17 +2061,17 @@ som_object_p (abfd) #define ENTRY_SIZE sizeof (struct som_entry) amt = FILE_HDR_SIZE; - if (bfd_bread ((PTR) &file_hdr, amt, abfd) != amt) + if (bfd_bread ((void *) &file_hdr, amt, abfd) != amt) { if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_wrong_format); - return 0; + return NULL; } if (!_PA_RISC_ID (file_hdr.system_id)) { bfd_set_error (bfd_error_wrong_format); - return 0; + return NULL; } switch (file_hdr.a_magic) @@ -2241,15 +2099,15 @@ som_object_p (abfd) { if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_wrong_format); - return 0; + return NULL; } amt = SLSTHDR; - if (bfd_bread ((PTR) &lst_header, amt, abfd) != amt) + if (bfd_bread ((void *) &lst_header, amt, abfd) != amt) { if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_wrong_format); - return 0; + return NULL; } /* Position to and read the first directory entry. */ @@ -2258,15 +2116,15 @@ som_object_p (abfd) { if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_wrong_format); - return 0; + return NULL; } amt = ENTRY_SIZE; - if (bfd_bread ((PTR) &som_entry, amt, abfd) != amt) + if (bfd_bread ((void *) &som_entry, amt, abfd) != amt) { if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_wrong_format); - return 0; + return NULL; } /* Now position to the first SOM. */ @@ -2275,18 +2133,18 @@ som_object_p (abfd) { if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_wrong_format); - return 0; + return NULL; } current_offset = som_entry.location; /* And finally, re-read the som header. */ amt = FILE_HDR_SIZE; - if (bfd_bread ((PTR) &file_hdr, amt, abfd) != amt) + if (bfd_bread ((void *) &file_hdr, amt, abfd) != amt) { if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_wrong_format); - return 0; + return NULL; } break; @@ -2294,14 +2152,14 @@ som_object_p (abfd) default: bfd_set_error (bfd_error_wrong_format); - return 0; + return NULL; } if (file_hdr.version_id != VERSION_ID && file_hdr.version_id != NEW_VERSION_ID) { bfd_set_error (bfd_error_wrong_format); - return 0; + return NULL; } /* If the aux_header_size field in the file header is zero, then this @@ -2314,11 +2172,11 @@ som_object_p (abfd) if (aux_hdr_ptr == NULL) return NULL; amt = AUX_HDR_SIZE; - if (bfd_bread ((PTR) aux_hdr_ptr, amt, abfd) != amt) + if (bfd_bread ((void *) aux_hdr_ptr, amt, abfd) != amt) { if (bfd_get_error () != bfd_error_system_call) bfd_set_error (bfd_error_wrong_format); - return 0; + return NULL; } } @@ -2326,7 +2184,7 @@ som_object_p (abfd) { /* setup_sections does not bubble up a bfd error code. */ bfd_set_error (bfd_error_bad_value); - return 0; + return NULL; } /* This appears to be a valid SOM object. Do some initialization. */ @@ -2336,12 +2194,10 @@ som_object_p (abfd) /* Create a SOM object. */ static bfd_boolean -som_mkobject (abfd) - bfd *abfd; +som_mkobject (bfd *abfd) { /* Allocate memory to hold backend information. */ - abfd->tdata.som_data = (struct som_data_struct *) - bfd_zalloc (abfd, (bfd_size_type) sizeof (struct som_data_struct)); + abfd->tdata.som_data = bfd_zalloc (abfd, (bfd_size_type) sizeof (struct som_data_struct)); if (abfd->tdata.som_data == NULL) return FALSE; return TRUE; @@ -2352,15 +2208,14 @@ som_mkobject (abfd) is only meant to handle relocatable objects. */ static bfd_boolean -som_prep_headers (abfd) - bfd *abfd; +som_prep_headers (bfd *abfd) { struct header *file_hdr; asection *section; bfd_size_type amt = sizeof (struct header); /* Make and attach a file header to the BFD. */ - file_hdr = (struct header *) bfd_zalloc (abfd, amt); + file_hdr = bfd_zalloc (abfd, amt); if (file_hdr == NULL) return FALSE; obj_som_file_hdr (abfd) = file_hdr; @@ -2369,8 +2224,7 @@ som_prep_headers (abfd) { /* Make and attach an exec header to the BFD. */ amt = sizeof (struct som_exec_auxhdr); - obj_som_exec_hdr (abfd) = - (struct som_exec_auxhdr *) bfd_zalloc (abfd, amt); + obj_som_exec_hdr (abfd) = bfd_zalloc (abfd, amt); if (obj_som_exec_hdr (abfd) == NULL) return FALSE; @@ -2401,7 +2255,6 @@ som_prep_headers (abfd) /* Now iterate over the sections translating information from BFD sections to SOM spaces/subspaces. */ - for (section = abfd->sections; section != NULL; section = section->next) { /* Ignore anything which has not been marked as a space or @@ -2413,8 +2266,7 @@ som_prep_headers (abfd) { /* Allocate space for the space dictionary. */ amt = sizeof (struct space_dictionary_record); - som_section_data (section)->space_dict = - (struct space_dictionary_record *) bfd_zalloc (abfd, amt); + som_section_data (section)->space_dict = bfd_zalloc (abfd, amt); if (som_section_data (section)->space_dict == NULL) return FALSE; /* Set space attributes. Note most attributes of SOM spaces @@ -2436,8 +2288,7 @@ som_prep_headers (abfd) { /* Allocate space for the subspace dictionary. */ amt = sizeof (struct som_subspace_dictionary_record); - som_section_data (section)->subspace_dict = - (struct som_subspace_dictionary_record *) bfd_zalloc (abfd, amt); + som_section_data (section)->subspace_dict = bfd_zalloc (abfd, amt); if (som_section_data (section)->subspace_dict == NULL) return FALSE; @@ -2480,8 +2331,7 @@ som_prep_headers (abfd) /* Return TRUE if the given section is a SOM space, FALSE otherwise. */ static bfd_boolean -som_is_space (section) - asection *section; +som_is_space (asection *section) { /* If no copy data is available, then it's neither a space nor a subspace. */ @@ -2502,8 +2352,7 @@ som_is_space (section) /* Return TRUE if the given section is a SOM subspace, FALSE otherwise. */ static bfd_boolean -som_is_subspace (section) - asection *section; +som_is_subspace (asection *section) { /* If no copy data is available, then it's neither a space nor a subspace. */ @@ -2526,19 +2375,17 @@ som_is_subspace (section) is a subspace. */ static bfd_boolean -som_is_container (space, subspace) - asection *space, *subspace; +som_is_container (asection *space, asection *subspace) { - return (som_section_data (subspace)->copy_data->container == space - || (som_section_data (subspace)->copy_data->container->output_section - == space)); + return (som_section_data (subspace)->copy_data->container == space) + || (som_section_data (subspace)->copy_data->container->output_section + == space); } /* Count and return the number of spaces attached to the given BFD. */ static unsigned long -som_count_spaces (abfd) - bfd *abfd; +som_count_spaces (bfd *abfd) { int count = 0; asection *section; @@ -2552,8 +2399,7 @@ som_count_spaces (abfd) /* Count the number of subspaces attached to the given BFD. */ static unsigned long -som_count_subspaces (abfd) - bfd *abfd; +som_count_subspaces (bfd *abfd) { int count = 0; asection *section; @@ -2571,10 +2417,7 @@ som_count_subspaces (abfd) count. Doing so compacts the relocation stream. */ static int -compare_syms (arg1, arg2) - const PTR arg1; - const PTR arg2; - +compare_syms (const void *arg1, const void *arg2) { asymbol **sym1 = (asymbol **) arg1; asymbol **sym2 = (asymbol **) arg2; @@ -2604,10 +2447,7 @@ compare_syms (arg1, arg2) and subspace. */ static int -compare_subspaces (arg1, arg2) - const PTR arg1; - const PTR arg2; - +compare_subspaces (const void *arg1, const void *arg2) { asection **subspace1 = (asection **) arg1; asection **subspace2 = (asection **) arg2; @@ -2623,10 +2463,7 @@ compare_subspaces (arg1, arg2) /* Perform various work in preparation for emitting the fixup stream. */ static void -som_prep_for_fixups (abfd, syms, num_syms) - bfd *abfd; - asymbol **syms; - unsigned long num_syms; +som_prep_for_fixups (bfd *abfd, asymbol **syms, unsigned long num_syms) { unsigned long i; asection *section; @@ -2705,7 +2542,7 @@ som_prep_for_fixups (abfd, syms, num_syms) output symbol table. */ amt = num_syms; amt *= sizeof (asymbol *); - sorted_syms = (asymbol **) bfd_zalloc (abfd, amt); + sorted_syms = bfd_zalloc (abfd, amt); memcpy (sorted_syms, syms, num_syms * sizeof (asymbol *)); qsort (sorted_syms, num_syms, sizeof (asymbol *), compare_syms); obj_som_sorted_syms (abfd) = sorted_syms; @@ -2724,10 +2561,9 @@ som_prep_for_fixups (abfd, syms, num_syms) } static bfd_boolean -som_write_fixups (abfd, current_offset, total_reloc_sizep) - bfd *abfd; - unsigned long current_offset; - unsigned int *total_reloc_sizep; +som_write_fixups (bfd *abfd, + unsigned long current_offset, + unsigned int *total_reloc_sizep) { unsigned int i, j; /* Chunk of memory that we can use as buffer space, then throw @@ -2831,7 +2667,7 @@ som_write_fixups (abfd, current_offset, total_reloc_sizep) if (p - tmp_space + 100 > SOM_TMP_BUFSIZE) { amt = p - tmp_space; - if (bfd_bwrite ((PTR) tmp_space, amt, abfd) != amt) + if (bfd_bwrite ((void *) tmp_space, amt, abfd) != amt) return FALSE; p = tmp_space; @@ -3098,7 +2934,7 @@ som_write_fixups (abfd, current_offset, total_reloc_sizep) /* Scribble out the relocations. */ amt = p - tmp_space; - if (bfd_bwrite ((PTR) tmp_space, amt, abfd) != amt) + if (bfd_bwrite ((void *) tmp_space, amt, abfd) != amt) return FALSE; p = tmp_space; @@ -3115,16 +2951,15 @@ som_write_fixups (abfd, current_offset, total_reloc_sizep) /* Write out the space/subspace string table. */ static bfd_boolean -som_write_space_strings (abfd, current_offset, string_sizep) - bfd *abfd; - unsigned long current_offset; - unsigned int *string_sizep; +som_write_space_strings (bfd *abfd, + unsigned long current_offset, + unsigned int *string_sizep) { /* Chunk of memory that we can use as buffer space, then throw away. */ size_t tmp_space_size = SOM_TMP_BUFSIZE; - unsigned char *tmp_space = alloca (tmp_space_size); - unsigned char *p = tmp_space; + char *tmp_space = alloca (tmp_space_size); + char *p = tmp_space; unsigned int strings_size = 0; asection *section; bfd_size_type amt; @@ -3156,7 +2991,7 @@ som_write_space_strings (abfd, current_offset, string_sizep) { /* Flush buffer before refilling or reallocating. */ amt = p - tmp_space; - if (bfd_bwrite ((PTR) &tmp_space[0], amt, abfd) != amt) + if (bfd_bwrite ((void *) &tmp_space[0], amt, abfd) != amt) return FALSE; /* Reallocate if now empty buffer still too small. */ @@ -3207,7 +3042,7 @@ som_write_space_strings (abfd, current_offset, string_sizep) /* Done with the space/subspace strings. Write out any information contained in a partial block. */ amt = p - tmp_space; - if (bfd_bwrite ((PTR) &tmp_space[0], amt, abfd) != amt) + if (bfd_bwrite ((void *) &tmp_space[0], amt, abfd) != amt) return FALSE; *string_sizep = strings_size; return TRUE; @@ -3216,25 +3051,23 @@ som_write_space_strings (abfd, current_offset, string_sizep) /* Write out the symbol string table. */ static bfd_boolean -som_write_symbol_strings (abfd, current_offset, syms, num_syms, string_sizep, - compilation_unit) - bfd *abfd; - unsigned long current_offset; - asymbol **syms; - unsigned int num_syms; - unsigned int *string_sizep; - COMPUNIT *compilation_unit; +som_write_symbol_strings (bfd *abfd, + unsigned long current_offset, + asymbol **syms, + unsigned int num_syms, + unsigned int *string_sizep, + COMPUNIT *compilation_unit) { unsigned int i; /* Chunk of memory that we can use as buffer space, then throw away. */ size_t tmp_space_size = SOM_TMP_BUFSIZE; - unsigned char *tmp_space = alloca (tmp_space_size); - unsigned char *p = tmp_space; + char *tmp_space = alloca (tmp_space_size); + char *p = tmp_space; unsigned int strings_size = 0; - unsigned char *comp[4]; + char *comp[4]; bfd_size_type amt; /* This gets a bit gruesome because of the compilation unit. The @@ -3269,7 +3102,7 @@ som_write_symbol_strings (abfd, current_offset, syms, num_syms, string_sizep, { /* Flush buffer before refilling or reallocating. */ amt = p - tmp_space; - if (bfd_bwrite ((PTR) &tmp_space[0], amt, abfd) != amt) + if (bfd_bwrite ((void *) &tmp_space[0], amt, abfd) != amt) return FALSE; /* Reallocate if now empty buffer still too small. */ @@ -3338,7 +3171,7 @@ som_write_symbol_strings (abfd, current_offset, syms, num_syms, string_sizep, { /* Flush buffer before refilling or reallocating. */ amt = p - tmp_space; - if (bfd_bwrite ((PTR) &tmp_space[0], amt, abfd) != amt) + if (bfd_bwrite ((void *) &tmp_space[0], amt, abfd) != amt) return FALSE; /* Reallocate if now empty buffer still too small. */ @@ -3379,7 +3212,7 @@ som_write_symbol_strings (abfd, current_offset, syms, num_syms, string_sizep, /* Scribble out any partial block. */ amt = p - tmp_space; - if (bfd_bwrite ((PTR) &tmp_space[0], amt, abfd) != amt) + if (bfd_bwrite ((void *) &tmp_space[0], amt, abfd) != amt) return FALSE; *string_sizep = strings_size; @@ -3391,11 +3224,10 @@ som_write_symbol_strings (abfd, current_offset, syms, num_syms, string_sizep, writing parts of the object file. */ static bfd_boolean -som_begin_writing (abfd) - bfd *abfd; +som_begin_writing (bfd *abfd) { unsigned long current_offset = 0; - int strings_size = 0; + unsigned int strings_size = 0; unsigned long num_spaces, num_subspaces, i; asection *section; unsigned int total_subspaces = 0; @@ -3442,14 +3274,14 @@ som_begin_writing (abfd) len = sizeof (struct aux_id) + sizeof (unsigned int); obj_som_file_hdr (abfd)->aux_header_size += len; current_offset += len; - if (bfd_bwrite ((PTR) obj_som_version_hdr (abfd), len, abfd) != len) + if (bfd_bwrite ((void *) obj_som_version_hdr (abfd), len, abfd) != len) return FALSE; /* Write the version string. */ len = obj_som_version_hdr (abfd)->header_id.length - sizeof (int); obj_som_file_hdr (abfd)->aux_header_size += len; current_offset += len; - if (bfd_bwrite ((PTR) obj_som_version_hdr (abfd)->user_string, len, abfd) + if (bfd_bwrite ((void *) obj_som_version_hdr (abfd)->user_string, len, abfd) != len) return FALSE; } @@ -3465,14 +3297,14 @@ som_begin_writing (abfd) len = sizeof (struct aux_id) + sizeof (unsigned int); obj_som_file_hdr (abfd)->aux_header_size += len; current_offset += len; - if (bfd_bwrite ((PTR) obj_som_copyright_hdr (abfd), len, abfd) != len) + if (bfd_bwrite ((void *) obj_som_copyright_hdr (abfd), len, abfd) != len) return FALSE; /* Write the copyright string. */ len = obj_som_copyright_hdr (abfd)->header_id.length - sizeof (int); obj_som_file_hdr (abfd)->aux_header_size += len; current_offset += len; - if (bfd_bwrite ((PTR) obj_som_copyright_hdr (abfd)->copyright, len, abfd) + if (bfd_bwrite ((void *) obj_som_copyright_hdr (abfd)->copyright, len, abfd) != len) return FALSE; } @@ -3721,7 +3553,7 @@ som_begin_writing (abfd) current_offset = SOM_ALIGN (current_offset, PA_PAGESIZE); if (bfd_seek (abfd, (file_ptr) current_offset - 1, SEEK_SET) != 0) return FALSE; - if (bfd_bwrite ((PTR) "", (bfd_size_type) 1, abfd) != 1) + if (bfd_bwrite ((void *) "", (bfd_size_type) 1, abfd) != 1) return FALSE; obj_som_file_hdr (abfd)->unloadable_sp_size @@ -3740,17 +3572,16 @@ som_begin_writing (abfd) /* Finally, scribble out the various headers to the disk. */ static bfd_boolean -som_finish_writing (abfd) - bfd *abfd; +som_finish_writing (bfd *abfd) { int num_spaces = som_count_spaces (abfd); asymbol **syms = bfd_get_outsymbols (abfd); - int i, num_syms, strings_size; + int i, num_syms; int subspace_index = 0; file_ptr location; asection *section; unsigned long current_offset; - unsigned int total_reloc_size; + unsigned int strings_size, total_reloc_size; bfd_size_type amt; /* We must set up the version identifier here as objcopy/strip copy @@ -3883,7 +3714,7 @@ som_finish_writing (abfd) /* Dump the current subspace header. */ amt = sizeof (struct som_subspace_dictionary_record); - if (bfd_bwrite ((PTR) som_section_data (subsection)->subspace_dict, + if (bfd_bwrite ((void *) som_section_data (subsection)->subspace_dict, amt, abfd) != amt) return FALSE; } @@ -3939,7 +3770,7 @@ som_finish_writing (abfd) /* Dump this subspace header. */ amt = sizeof (struct som_subspace_dictionary_record); - if (bfd_bwrite ((PTR) som_section_data (subsection)->subspace_dict, + if (bfd_bwrite ((void *) som_section_data (subsection)->subspace_dict, amt, abfd) != amt) return FALSE; } @@ -3965,7 +3796,7 @@ som_finish_writing (abfd) /* Dump its header. */ amt = sizeof (struct space_dictionary_record); - if (bfd_bwrite ((PTR) som_section_data (section)->space_dict, + if (bfd_bwrite ((void *) som_section_data (section)->space_dict, amt, abfd) != amt) return FALSE; @@ -3981,7 +3812,7 @@ som_finish_writing (abfd) return FALSE; amt = COMPUNITSZ; - if (bfd_bwrite ((PTR) obj_som_compilation_unit (abfd), amt, abfd) != amt) + if (bfd_bwrite ((void *) obj_som_compilation_unit (abfd), amt, abfd) != amt) return FALSE; } @@ -4005,7 +3836,7 @@ som_finish_writing (abfd) if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0) return FALSE; amt = sizeof (struct header); - if (bfd_bwrite ((PTR) obj_som_file_hdr (abfd), amt, abfd) != amt) + if (bfd_bwrite ((void *) obj_som_file_hdr (abfd), amt, abfd) != amt) return FALSE; /* Now write the exec header. */ @@ -4043,7 +3874,7 @@ som_finish_writing (abfd) return FALSE; amt = AUX_HDR_SIZE; - if (bfd_bwrite ((PTR) exec_header, amt, abfd) != amt) + if (bfd_bwrite ((void *) exec_header, amt, abfd) != amt) return FALSE; } return TRUE; @@ -4052,8 +3883,7 @@ som_finish_writing (abfd) /* Compute and return the checksum for a SOM file header. */ static unsigned long -som_compute_checksum (abfd) - bfd *abfd; +som_compute_checksum (bfd *abfd) { unsigned long checksum, count, i; unsigned long *buffer = (unsigned long *) obj_som_file_hdr (abfd); @@ -4067,10 +3897,9 @@ som_compute_checksum (abfd) } static void -som_bfd_derive_misc_symbol_info (abfd, sym, info) - bfd *abfd ATTRIBUTE_UNUSED; - asymbol *sym; - struct som_misc_symbol_info *info; +som_bfd_derive_misc_symbol_info (bfd *abfd ATTRIBUTE_UNUSED, + asymbol *sym, + struct som_misc_symbol_info *info) { /* Initialize. */ memset (info, 0, sizeof (struct som_misc_symbol_info)); @@ -4226,8 +4055,7 @@ som_bfd_derive_misc_symbol_info (abfd, sym, info) this BFD. */ static bfd_boolean -som_build_and_write_symbol_table (abfd) - bfd *abfd; +som_build_and_write_symbol_table (bfd *abfd) { unsigned int num_syms = bfd_get_symcount (abfd); file_ptr symtab_location = obj_som_file_hdr (abfd)->symbol_location; @@ -4240,7 +4068,7 @@ som_build_and_write_symbol_table (abfd) to hold the symbol table as we build it. */ symtab_size = num_syms; symtab_size *= sizeof (struct symbol_dictionary_record); - som_symtab = (struct symbol_dictionary_record *) bfd_zmalloc (symtab_size); + som_symtab = bfd_zmalloc (symtab_size); if (som_symtab == NULL && symtab_size != 0) goto error_return; @@ -4275,7 +4103,7 @@ som_build_and_write_symbol_table (abfd) if (bfd_seek (abfd, symtab_location, SEEK_SET) != 0) return FALSE; - if (bfd_bwrite ((PTR) som_symtab, symtab_size, abfd) != symtab_size) + if (bfd_bwrite ((void *) som_symtab, symtab_size, abfd) != symtab_size) goto error_return; if (som_symtab != NULL) @@ -4290,8 +4118,7 @@ som_build_and_write_symbol_table (abfd) /* Write an object in SOM format. */ static bfd_boolean -som_write_object_contents (abfd) - bfd *abfd; +som_write_object_contents (bfd *abfd) { if (! abfd->output_has_begun) { @@ -4304,14 +4131,13 @@ som_write_object_contents (abfd) som_begin_writing (abfd); } - return (som_finish_writing (abfd)); + return som_finish_writing (abfd); } /* Read and save the string table associated with the given BFD. */ static bfd_boolean -som_slurp_string_table (abfd) - bfd *abfd; +som_slurp_string_table (bfd *abfd) { char *stringtab; bfd_size_type amt; @@ -4350,21 +4176,18 @@ som_slurp_string_table (abfd) table for this object. */ static long -som_get_symtab_upper_bound (abfd) - bfd *abfd; +som_get_symtab_upper_bound (bfd *abfd) { if (!som_slurp_symbol_table (abfd)) return -1; - return (bfd_get_symcount (abfd) + 1) * (sizeof (asymbol *)); + return (bfd_get_symcount (abfd) + 1) * sizeof (asymbol *); } /* Convert from a SOM subspace index to a BFD section. */ static asection * -bfd_section_from_som_symbol (abfd, symbol) - bfd *abfd; - struct symbol_dictionary_record *symbol; +bfd_section_from_som_symbol (bfd *abfd, struct symbol_dictionary_record *symbol) { asection *section; @@ -4378,14 +4201,10 @@ bfd_section_from_som_symbol (abfd, symbol) && symbol->symbol_type != ST_MILLICODE)) { int index = symbol->symbol_info; + for (section = abfd->sections; section != NULL; section = section->next) if (section->target_index == index && som_is_subspace (section)) return section; - - /* Could be a symbol from an external library (such as an OMOS - shared library). Don't abort. */ - return bfd_abs_section_ptr; - } else { @@ -4394,25 +4213,21 @@ bfd_section_from_som_symbol (abfd, symbol) /* For executables we will have to use the symbol's address and find out what section would contain that address. Yuk. */ for (section = abfd->sections; section; section = section->next) - { - if (value >= section->vma - && value <= section->vma + section->size - && som_is_subspace (section)) - return section; - } - - /* Could be a symbol from an external library (such as an OMOS - shared library). Don't abort. */ - return bfd_abs_section_ptr; - + if (value >= section->vma + && value <= section->vma + section->size + && som_is_subspace (section)) + return section; } + + /* Could be a symbol from an external library (such as an OMOS + shared library). Don't abort. */ + return bfd_abs_section_ptr; } /* Read and save the symbol table associated with the given BFD. */ static unsigned int -som_slurp_symbol_table (abfd) - bfd *abfd; +som_slurp_symbol_table (bfd *abfd) { int symbol_count = bfd_get_symcount (abfd); int symsize = sizeof (struct symbol_dictionary_record); @@ -4436,7 +4251,7 @@ som_slurp_symbol_table (abfd) amt = symbol_count; amt *= sizeof (som_symbol_type); - symbase = (som_symbol_type *) bfd_zmalloc (amt); + symbase = bfd_zmalloc (amt); if (symbase == NULL) goto error_return; @@ -4455,7 +4270,6 @@ som_slurp_symbol_table (abfd) endbufp = buf + symbol_count; for (bufp = buf, sym = symbase; bufp < endbufp; ++bufp) { - /* I don't think we care about these. */ if (bufp->symbol_type == ST_SYM_EXT || bufp->symbol_type == ST_ARG_EXT) @@ -4543,11 +4357,6 @@ som_slurp_symbol_table (abfd) sym->symbol.value -= sym->symbol.section->vma; break; -#if 0 - /* SS_GLOBAL and SS_LOCAL are two names for the same thing. - Sound dumb? It is. */ - case SS_GLOBAL: -#endif case SS_LOCAL: sym->symbol.flags |= BSF_LOCAL; sym->symbol.section = bfd_section_from_som_symbol (abfd, bufp); @@ -4599,9 +4408,7 @@ som_slurp_symbol_table (abfd) in the symbol table. */ static long -som_canonicalize_symtab (abfd, location) - bfd *abfd; - asymbol **location; +som_canonicalize_symtab (bfd *abfd, asymbol **location) { int i; som_symbol_type *symbase; @@ -4623,13 +4430,13 @@ som_canonicalize_symtab (abfd, location) /* Make a SOM symbol. There is nothing special to do here. */ static asymbol * -som_make_empty_symbol (abfd) - bfd *abfd; +som_make_empty_symbol (bfd *abfd) { bfd_size_type amt = sizeof (som_symbol_type); - som_symbol_type *new = (som_symbol_type *) bfd_zalloc (abfd, amt); + som_symbol_type *new = bfd_zalloc (abfd, amt); + if (new == NULL) - return 0; + return NULL; new->symbol.the_bfd = abfd; return &new->symbol; @@ -4638,13 +4445,13 @@ som_make_empty_symbol (abfd) /* Print symbol information. */ static void -som_print_symbol (abfd, afile, symbol, how) - bfd *abfd; - PTR afile; - asymbol *symbol; - bfd_print_symbol_type how; +som_print_symbol (bfd *abfd, + void *afile, + asymbol *symbol, + bfd_print_symbol_type how) { FILE *file = (FILE *) afile; + switch (how) { case bfd_print_symbol_name: @@ -4658,8 +4465,9 @@ som_print_symbol (abfd, afile, symbol, how) case bfd_print_symbol_all: { const char *section_name; + section_name = symbol->section ? symbol->section->name : "(*none*)"; - bfd_print_symbol_vandf (abfd, (PTR) file, symbol); + bfd_print_symbol_vandf (abfd, (void *) file, symbol); fprintf (file, " %s\t%s", section_name, symbol->name); break; } @@ -4667,11 +4475,10 @@ som_print_symbol (abfd, afile, symbol, how) } static bfd_boolean -som_bfd_is_local_label_name (abfd, name) - bfd *abfd ATTRIBUTE_UNUSED; - const char *name; +som_bfd_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED, + const char *name) { - return (name[0] == 'L' && name[1] == '$'); + return name[0] == 'L' && name[1] == '$'; } /* Count or process variable-length SOM fixup records. @@ -4688,13 +4495,12 @@ som_bfd_is_local_label_name (abfd, name) This needs at least two or three more passes to get it cleaned up. */ static unsigned int -som_set_reloc_info (fixup, end, internal_relocs, section, symbols, just_count) - unsigned char *fixup; - unsigned int end; - arelent *internal_relocs; - asection *section; - asymbol **symbols; - bfd_boolean just_count; +som_set_reloc_info (unsigned char *fixup, + unsigned int end, + arelent *internal_relocs, + asection *section, + asymbol **symbols, + bfd_boolean just_count) { unsigned int op, varname, deallocate_contents = 0; unsigned char *end_fixups = &fixup[end]; @@ -4721,7 +4527,6 @@ som_set_reloc_info (fixup, end, internal_relocs, section, symbols, just_count) while (fixup < end_fixups) { - /* Save pointer to the start of this fixup. We'll use it later to determine if it is necessary to put this fixup on the queue. */ @@ -5032,13 +4837,12 @@ som_set_reloc_info (fixup, end, internal_relocs, section, symbols, just_count) of actual relocations. */ static bfd_boolean -som_slurp_reloc_table (abfd, section, symbols, just_count) - bfd *abfd; - asection *section; - asymbol **symbols; - bfd_boolean just_count; +som_slurp_reloc_table (bfd *abfd, + asection *section, + asymbol **symbols, + bfd_boolean just_count) { - char *external_relocs; + unsigned char *external_relocs; unsigned int fixup_stream_size; arelent *internal_relocs; unsigned int num_relocs; @@ -5054,8 +4858,8 @@ som_slurp_reloc_table (abfd, section, symbols, just_count) if (section->reloc_count == (unsigned) -1) { amt = fixup_stream_size; - external_relocs = (char *) bfd_malloc (amt); - if (external_relocs == (char *) NULL) + external_relocs = bfd_malloc (amt); + if (external_relocs == NULL) return FALSE; /* Read in the external forms. */ if (bfd_seek (abfd, @@ -5083,13 +4887,13 @@ som_slurp_reloc_table (abfd, section, symbols, just_count) num_relocs = section->reloc_count; external_relocs = som_section_data (section)->reloc_stream; /* Return saved information about the relocations if it is available. */ - if (section->relocation != (arelent *) NULL) + if (section->relocation != NULL) return TRUE; amt = num_relocs; amt *= sizeof (arelent); - internal_relocs = (arelent *) bfd_zalloc (abfd, (amt)); - if (internal_relocs == (arelent *) NULL) + internal_relocs = bfd_zalloc (abfd, (amt)); + if (internal_relocs == NULL) return FALSE; /* Process and internalize the relocations. */ @@ -5109,9 +4913,7 @@ som_slurp_reloc_table (abfd, section, symbols, just_count) information associated with the given section. */ static long -som_get_reloc_upper_bound (abfd, asect) - bfd *abfd; - sec_ptr asect; +som_get_reloc_upper_bound (bfd *abfd, sec_ptr asect) { /* If section has relocations, then read in the relocation stream and parse it to determine how many relocations exist. */ @@ -5129,11 +4931,10 @@ som_get_reloc_upper_bound (abfd, asect) form. Return the number of relocations. */ static long -som_canonicalize_reloc (abfd, section, relptr, symbols) - bfd *abfd; - sec_ptr section; - arelent **relptr; - asymbol **symbols; +som_canonicalize_reloc (bfd *abfd, + sec_ptr section, + arelent **relptr, + asymbol **symbols) { arelent *tblptr; int count; @@ -5147,7 +4948,7 @@ som_canonicalize_reloc (abfd, section, relptr, symbols) while (count--) *relptr++ = tblptr++; - *relptr = (arelent *) NULL; + *relptr = NULL; return section->reloc_count; } @@ -5156,12 +4957,11 @@ extern const bfd_target som_vec; /* A hook to set up object file dependent section information. */ static bfd_boolean -som_new_section_hook (abfd, newsect) - bfd *abfd; - asection *newsect; +som_new_section_hook (bfd *abfd, asection *newsect) { bfd_size_type amt = sizeof (struct som_section_data_struct); - newsect->used_by_bfd = (PTR) bfd_zalloc (abfd, amt); + + newsect->used_by_bfd = bfd_zalloc (abfd, amt); if (!newsect->used_by_bfd) return FALSE; newsect->alignment_power = 3; @@ -5174,11 +4974,10 @@ som_new_section_hook (abfd, newsect) to the output symbol. */ static bfd_boolean -som_bfd_copy_private_symbol_data (ibfd, isymbol, obfd, osymbol) - bfd *ibfd; - asymbol *isymbol; - bfd *obfd; - asymbol *osymbol; +som_bfd_copy_private_symbol_data (bfd *ibfd, + asymbol *isymbol, + bfd *obfd, + asymbol *osymbol) { struct som_symbol *input_symbol = (struct som_symbol *) isymbol; struct som_symbol *output_symbol = (struct som_symbol *) osymbol; @@ -5200,11 +4999,10 @@ som_bfd_copy_private_symbol_data (ibfd, isymbol, obfd, osymbol) to the output section. */ static bfd_boolean -som_bfd_copy_private_section_data (ibfd, isection, obfd, osection) - bfd *ibfd; - asection *isection; - bfd *obfd; - asection *osection; +som_bfd_copy_private_section_data (bfd *ibfd, + asection *isection, + bfd *obfd, + asection *osection) { bfd_size_type amt; @@ -5215,8 +5013,7 @@ som_bfd_copy_private_section_data (ibfd, isection, obfd, osection) return TRUE; amt = sizeof (struct som_copyable_section_data_struct); - som_section_data (osection)->copy_data = - (struct som_copyable_section_data_struct *) bfd_zalloc (obfd, amt); + som_section_data (osection)->copy_data = bfd_zalloc (obfd, amt); if (som_section_data (osection)->copy_data == NULL) return FALSE; @@ -5236,8 +5033,7 @@ som_bfd_copy_private_section_data (ibfd, isection, obfd, osection) to the output bfd. */ static bfd_boolean -som_bfd_copy_private_bfd_data (ibfd, obfd) - bfd *ibfd, *obfd; +som_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd) { /* One day we may try to grok other private data. */ if (ibfd->xvec->flavour != bfd_target_som_flavour @@ -5245,8 +5041,7 @@ som_bfd_copy_private_bfd_data (ibfd, obfd) return TRUE; /* Allocate some memory to hold the data we need. */ - obj_som_exec_data (obfd) = (struct som_exec_data *) - bfd_zalloc (obfd, (bfd_size_type) sizeof (struct som_exec_data)); + obj_som_exec_data (obfd) = bfd_zalloc (obfd, (bfd_size_type) sizeof (struct som_exec_data)); if (obj_som_exec_data (obfd) == NULL) return FALSE; @@ -5285,16 +5080,20 @@ som_bfd_print_private_bfd_data (bfd *abfd, void *farg) fprintf (f, "\n"); fprintf (f, " type %#x\n", auxhdr->type); fprintf (f, " length %#x\n", auxhdr->length); - fprintf (f, " text size %#x\n", exec_header->exec_tsize); - fprintf (f, " text memory offset %#x\n", exec_header->exec_tmem); - fprintf (f, " text file offset %#x\n", exec_header->exec_tfile); - fprintf (f, " data size %#x\n", exec_header->exec_dsize); - fprintf (f, " data memory offset %#x\n", exec_header->exec_dmem); - fprintf (f, " data file offset %#x\n", exec_header->exec_dfile); - fprintf (f, " bss size %#x\n", exec_header->exec_bsize); - fprintf (f, " entry point %#x\n", exec_header->exec_entry); - fprintf (f, " loader flags %#x\n", exec_header->exec_flags); - fprintf (f, " bss initializer %#x\n", exec_header->exec_bfill); + + /* Note that, depending on the HP-UX version, the following fields can be + either ints, or longs. */ + + 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 file offset %#lx\n", (long) exec_header->exec_tfile); + fprintf (f, " data size %#lx\n", (long) exec_header->exec_dsize); + fprintf (f, " data memory offset %#lx\n", (long) exec_header->exec_dmem); + fprintf (f, " data file offset %#lx\n", (long) exec_header->exec_dfile); + fprintf (f, " bss size %#lx\n", (long) exec_header->exec_bsize); + fprintf (f, " entry point %#lx\n", (long) exec_header->exec_entry); + fprintf (f, " loader flags %#lx\n", (long) exec_header->exec_flags); + fprintf (f, " bss initializer %#lx\n", (long) exec_header->exec_bfill); } return TRUE; @@ -5304,20 +5103,18 @@ som_bfd_print_private_bfd_data (bfd *abfd, void *farg) in the BFD data structures. */ bfd_boolean -bfd_som_set_section_attributes (section, defined, private, sort_key, spnum) - asection *section; - int defined; - int private; - unsigned int sort_key; - int spnum; +bfd_som_set_section_attributes (asection *section, + int defined, + int private, + unsigned int sort_key, + int spnum) { /* Allocate memory to hold the magic information. */ if (som_section_data (section)->copy_data == NULL) { bfd_size_type amt = sizeof (struct som_copyable_section_data_struct); - som_section_data (section)->copy_data = - (struct som_copyable_section_data_struct *) bfd_zalloc (section->owner, - amt); + + som_section_data (section)->copy_data = bfd_zalloc (section->owner, amt); if (som_section_data (section)->copy_data == NULL) return FALSE; } @@ -5333,22 +5130,21 @@ bfd_som_set_section_attributes (section, defined, private, sort_key, spnum) in the BFD data structures. */ bfd_boolean -bfd_som_set_subsection_attributes (section, container, access, - sort_key, quadrant, comdat, - common, dup_common) - asection *section; - asection *container; - int access; - unsigned int sort_key; - int quadrant, comdat, common, dup_common; +bfd_som_set_subsection_attributes (asection *section, + asection *container, + int access, + unsigned int sort_key, + int quadrant, + int comdat, + int common, + int dup_common) { /* Allocate memory to hold the magic information. */ if (som_section_data (section)->copy_data == NULL) { bfd_size_type amt = sizeof (struct som_copyable_section_data_struct); - som_section_data (section)->copy_data = - (struct som_copyable_section_data_struct *) bfd_zalloc (section->owner, - amt); + + som_section_data (section)->copy_data = bfd_zalloc (section->owner, amt); if (som_section_data (section)->copy_data == NULL) return FALSE; } @@ -5369,9 +5165,7 @@ bfd_som_set_subsection_attributes (section, container, access, the symbol type wrong your program will not link. */ void -bfd_som_set_symbol_type (symbol, type) - asymbol *symbol; - unsigned int type; +bfd_som_set_symbol_type (asymbol *symbol, unsigned int type) { som_symbol_data (symbol)->som_type = type; } @@ -5380,10 +5174,7 @@ bfd_som_set_symbol_type (symbol, type) written into the object file. */ bfd_boolean -bfd_som_attach_aux_hdr (abfd, type, string) - bfd *abfd; - int type; - char *string; +bfd_som_attach_aux_hdr (bfd *abfd, int type, char *string) { bfd_size_type amt; @@ -5395,8 +5186,7 @@ bfd_som_attach_aux_hdr (abfd, type, string) if (len % 4) pad = (4 - (len % 4)); amt = sizeof (struct aux_id) + sizeof (unsigned int) + len + pad; - obj_som_version_hdr (abfd) = - (struct user_string_aux_hdr *) bfd_zalloc (abfd, amt); + obj_som_version_hdr (abfd) = bfd_zalloc (abfd, amt); if (!obj_som_version_hdr (abfd)) return FALSE; obj_som_version_hdr (abfd)->header_id.type = VERSION_AUX_ID; @@ -5413,8 +5203,7 @@ bfd_som_attach_aux_hdr (abfd, type, string) if (len % 4) pad = (4 - (len % 4)); amt = sizeof (struct aux_id) + sizeof (unsigned int) + len + pad; - obj_som_copyright_hdr (abfd) = - (struct copyright_aux_hdr *) bfd_zalloc (abfd, amt); + obj_som_copyright_hdr (abfd) = bfd_zalloc (abfd, amt); if (!obj_som_copyright_hdr (abfd)) return FALSE; obj_som_copyright_hdr (abfd)->header_id.type = COPYRIGHT_AUX_ID; @@ -5430,15 +5219,14 @@ bfd_som_attach_aux_hdr (abfd, type, string) written into the object file. */ bfd_boolean -bfd_som_attach_compilation_unit (abfd, name, language_name, product_id, - version_id) - bfd *abfd; - const char *name; - const char *language_name; - const char *product_id; - const char *version_id; +bfd_som_attach_compilation_unit (bfd *abfd, + const char *name, + const char *language_name, + const char *product_id, + const char *version_id) { COMPUNIT *n = (COMPUNIT *) bfd_zalloc (abfd, (bfd_size_type) COMPUNITSZ); + if (n == NULL) return FALSE; @@ -5464,12 +5252,11 @@ bfd_som_attach_compilation_unit (abfd, name, language_name, product_id, } static bfd_boolean -som_get_section_contents (abfd, section, location, offset, count) - bfd *abfd; - sec_ptr section; - PTR location; - file_ptr offset; - bfd_size_type count; +som_get_section_contents (bfd *abfd, + sec_ptr section, + void *location, + file_ptr offset, + bfd_size_type count) { if (count == 0 || ((section->flags & SEC_HAS_CONTENTS) == 0)) return TRUE; @@ -5481,12 +5268,11 @@ som_get_section_contents (abfd, section, location, offset, count) } static bfd_boolean -som_set_section_contents (abfd, section, location, offset, count) - bfd *abfd; - sec_ptr section; - const PTR location; - file_ptr offset; - bfd_size_type count; +som_set_section_contents (bfd *abfd, + sec_ptr section, + const void *location, + file_ptr offset, + bfd_size_type count) { if (! abfd->output_has_begun) { @@ -5517,33 +5303,29 @@ som_set_section_contents (abfd, section, location, offset, count) } static bfd_boolean -som_set_arch_mach (abfd, arch, machine) - bfd *abfd; - enum bfd_architecture arch; - unsigned long machine; +som_set_arch_mach (bfd *abfd, + enum bfd_architecture arch, + unsigned long machine) { /* Allow any architecture to be supported by the SOM backend. */ return bfd_default_set_arch_mach (abfd, arch, machine); } static bfd_boolean -som_find_nearest_line (abfd, section, symbols, offset, filename_ptr, - functionname_ptr, line_ptr) - bfd *abfd ATTRIBUTE_UNUSED; - asection *section ATTRIBUTE_UNUSED; - asymbol **symbols ATTRIBUTE_UNUSED; - bfd_vma offset ATTRIBUTE_UNUSED; - const char **filename_ptr ATTRIBUTE_UNUSED; - const char **functionname_ptr ATTRIBUTE_UNUSED; - unsigned int *line_ptr ATTRIBUTE_UNUSED; +som_find_nearest_line (bfd *abfd ATTRIBUTE_UNUSED, + asection *section ATTRIBUTE_UNUSED, + asymbol **symbols ATTRIBUTE_UNUSED, + bfd_vma offset ATTRIBUTE_UNUSED, + const char **filename_ptr ATTRIBUTE_UNUSED, + const char **functionname_ptr ATTRIBUTE_UNUSED, + unsigned int *line_ptr ATTRIBUTE_UNUSED) { return FALSE; } static int -som_sizeof_headers (abfd, reloc) - bfd *abfd ATTRIBUTE_UNUSED; - bfd_boolean reloc ATTRIBUTE_UNUSED; +som_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED, + bfd_boolean reloc ATTRIBUTE_UNUSED) { (*_bfd_error_handler) (_("som_sizeof_headers unimplemented")); fflush (stderr); @@ -5555,8 +5337,7 @@ som_sizeof_headers (abfd, reloc) SOM section S, or '?' for an unknown SOM section. */ static char -som_section_type (s) - const char *s; +som_section_type (const char *s) { const struct section_to_type *t; @@ -5567,8 +5348,7 @@ som_section_type (s) } static int -som_decode_symclass (symbol) - asymbol *symbol; +som_decode_symclass (asymbol *symbol) { char c; @@ -5599,10 +5379,9 @@ som_decode_symclass (symbol) /* Return information about SOM symbol SYMBOL in RET. */ static void -som_get_symbol_info (ignore_abfd, symbol, ret) - bfd *ignore_abfd ATTRIBUTE_UNUSED; - asymbol *symbol; - symbol_info *ret; +som_get_symbol_info (bfd *ignore_abfd ATTRIBUTE_UNUSED, + asymbol *symbol, + symbol_info *ret) { ret->type = som_decode_symclass (symbol); if (ret->type != 'U') @@ -5616,10 +5395,9 @@ som_get_symbol_info (ignore_abfd, symbol, ret) so that we can allocate space for all the carsyms at once. */ static bfd_boolean -som_bfd_count_ar_symbols (abfd, lst_header, count) - bfd *abfd; - struct lst_header *lst_header; - symindex *count; +som_bfd_count_ar_symbols (bfd *abfd, + struct lst_header *lst_header, + symindex *count) { unsigned int i; unsigned int *hash_table = NULL; @@ -5628,7 +5406,7 @@ som_bfd_count_ar_symbols (abfd, lst_header, count) amt = lst_header->hash_size; amt *= sizeof (unsigned int); - hash_table = (unsigned int *) bfd_malloc (amt); + hash_table = bfd_malloc (amt); if (hash_table == NULL && lst_header->hash_size != 0) goto error_return; @@ -5637,7 +5415,7 @@ som_bfd_count_ar_symbols (abfd, lst_header, count) /* Read in the hash table. The has table is an array of 32bit file offsets which point to the hash chains. */ - if (bfd_bread ((PTR) hash_table, amt, abfd) != amt) + if (bfd_bread ((void *) hash_table, amt, abfd) != amt) goto error_return; /* Walk each chain counting the number of symbols found on that particular @@ -5656,7 +5434,7 @@ som_bfd_count_ar_symbols (abfd, lst_header, count) /* Read in this symbol and update the counter. */ amt = sizeof (lst_symbol); - if (bfd_bread ((PTR) &lst_symbol, amt, abfd) != amt) + if (bfd_bread ((void *) &lst_symbol, amt, abfd) != amt) goto error_return; (*count)++; @@ -5672,7 +5450,7 @@ som_bfd_count_ar_symbols (abfd, lst_header, count) /* Read the symbol in and update the counter. */ amt = sizeof (lst_symbol); - if (bfd_bread ((PTR) &lst_symbol, amt, abfd) != amt) + if (bfd_bread ((void *) &lst_symbol, amt, abfd) != amt) goto error_return; (*count)++; @@ -5692,10 +5470,9 @@ som_bfd_count_ar_symbols (abfd, lst_header, count) by ABFD and LST_HEADER. */ static bfd_boolean -som_bfd_fill_in_ar_symbols (abfd, lst_header, syms) - bfd *abfd; - struct lst_header *lst_header; - carsym **syms; +som_bfd_fill_in_ar_symbols (bfd *abfd, + struct lst_header *lst_header, + carsym **syms) { unsigned int i, len; carsym *set = syms[0]; @@ -5706,13 +5483,13 @@ som_bfd_fill_in_ar_symbols (abfd, lst_header, syms) amt = lst_header->hash_size; amt *= sizeof (unsigned int); - hash_table = (unsigned int *) bfd_malloc (amt); + hash_table = bfd_malloc (amt); if (hash_table == NULL && lst_header->hash_size != 0) goto error_return; /* Read in the hash table. The has table is an array of 32bit file offsets which point to the hash chains. */ - if (bfd_bread ((PTR) hash_table, amt, abfd) != amt) + if (bfd_bread ((void *) hash_table, amt, abfd) != amt) goto error_return; /* Seek to and read in the SOM dictionary. We will need this to fill @@ -5722,11 +5499,11 @@ som_bfd_fill_in_ar_symbols (abfd, lst_header, syms) amt = lst_header->module_count; amt *= sizeof (struct som_entry); - som_dict = (struct som_entry *) bfd_malloc (amt); + som_dict = bfd_malloc (amt); if (som_dict == NULL && lst_header->module_count != 0) goto error_return; - if (bfd_bread ((PTR) som_dict, amt, abfd) != amt) + if (bfd_bread ((void *) som_dict, amt, abfd) != amt) goto error_return; /* Walk each chain filling in the carsyms as we go along. */ @@ -5743,7 +5520,7 @@ som_bfd_fill_in_ar_symbols (abfd, lst_header, syms) goto error_return; amt = sizeof (lst_symbol); - if (bfd_bread ((PTR) &lst_symbol, amt, abfd) != amt) + if (bfd_bread ((void *) &lst_symbol, amt, abfd) != amt) goto error_return; /* Get the name of the symbol, first get the length which is stored @@ -5786,7 +5563,7 @@ som_bfd_fill_in_ar_symbols (abfd, lst_header, syms) goto error_return; amt = sizeof (lst_symbol); - if (bfd_bread ((PTR) &lst_symbol, amt, abfd) != amt) + if (bfd_bread ((void *) &lst_symbol, amt, abfd) != amt) goto error_return; /* Seek to the name length & string and read them in. */ @@ -5834,8 +5611,7 @@ som_bfd_fill_in_ar_symbols (abfd, lst_header, syms) /* Read in the LST from the archive. */ static bfd_boolean -som_slurp_armap (abfd) - bfd *abfd; +som_slurp_armap (bfd *abfd) { struct lst_header lst_header; struct ar_hdr ar_header; @@ -5843,7 +5619,7 @@ som_slurp_armap (abfd) struct artdata *ardata = bfd_ardata (abfd); char nextname[17]; bfd_size_type amt = 16; - int i = bfd_bread ((PTR) nextname, amt, abfd); + int i = bfd_bread ((void *) nextname, amt, abfd); /* Special cases. */ if (i == 0) @@ -5863,7 +5639,7 @@ som_slurp_armap (abfd) /* Read in and sanity check the archive header. */ amt = sizeof (struct ar_hdr); - if (bfd_bread ((PTR) &ar_header, amt, abfd) != amt) + if (bfd_bread ((void *) &ar_header, amt, abfd) != amt) return FALSE; if (strncmp (ar_header.ar_fmag, ARFMAG, 2)) @@ -5887,7 +5663,7 @@ som_slurp_armap (abfd) /* Read in the library symbol table. We'll make heavy use of this in just a minute. */ amt = sizeof (struct lst_header); - if (bfd_bread ((PTR) &lst_header, amt, abfd) != amt) + if (bfd_bread ((void *) &lst_header, amt, abfd) != amt) return FALSE; /* Sanity check. */ @@ -5910,7 +5686,7 @@ som_slurp_armap (abfd) ardata->cache = 0; amt = ardata->symdef_count; amt *= sizeof (carsym); - ardata->symdefs = (carsym *) bfd_alloc (abfd, amt); + ardata->symdefs = bfd_alloc (abfd, amt); if (!ardata->symdefs) return FALSE; @@ -5934,9 +5710,9 @@ som_slurp_armap (abfd) and the size of the associated string section. */ static bfd_boolean -som_bfd_prep_for_ar_write (abfd, num_syms, stringsize) - bfd *abfd; - unsigned int *num_syms, *stringsize; +som_bfd_prep_for_ar_write (bfd *abfd, + unsigned int *num_syms, + unsigned int *stringsize) { bfd *curr_bfd = abfd->archive_head; @@ -6008,8 +5784,7 @@ som_bfd_prep_for_ar_write (abfd, num_syms, stringsize) SOM ABI. */ static unsigned int -som_bfd_ar_symbol_hash (symbol) - asymbol *symbol; +som_bfd_ar_symbol_hash (asymbol *symbol) { unsigned int len = strlen (symbol->name); @@ -6025,11 +5800,11 @@ som_bfd_ar_symbol_hash (symbol) symbol table. */ static bfd_boolean -som_bfd_ar_write_symbol_stuff (abfd, nsyms, string_size, lst, elength) - bfd *abfd; - unsigned int nsyms, string_size; - struct lst_header lst; - unsigned elength; +som_bfd_ar_write_symbol_stuff (bfd *abfd, + unsigned int nsyms, + unsigned int string_size, + struct lst_header lst, + unsigned elength) { file_ptr lst_filepos; char *strings = NULL, *p; @@ -6043,19 +5818,19 @@ som_bfd_ar_write_symbol_stuff (abfd, nsyms, string_size, lst, elength) amt = lst.hash_size; amt *= sizeof (unsigned int); - hash_table = (unsigned int *) bfd_zmalloc (amt); + hash_table = bfd_zmalloc (amt); if (hash_table == NULL && lst.hash_size != 0) goto error_return; amt = lst.module_count; amt *= sizeof (struct som_entry); - som_dict = (struct som_entry *) bfd_zmalloc (amt); + som_dict = bfd_zmalloc (amt); if (som_dict == NULL && lst.module_count != 0) goto error_return; amt = lst.hash_size; amt *= sizeof (struct lst_symbol_record *); - last_hash_entry = ((struct lst_symbol_record **) bfd_zmalloc (amt)); + last_hash_entry = bfd_zmalloc (amt); if (last_hash_entry == NULL && lst.hash_size != 0) goto error_return; @@ -6190,14 +5965,12 @@ som_bfd_ar_write_symbol_stuff (abfd, nsyms, string_size, lst, elength) + sizeof (struct lst_header); } else - { - /* First entry in this hash chain. */ - hash_table[curr_lst_sym->symbol_key % lst.hash_size] - = (curr_lst_sym - lst_syms) * sizeof (struct lst_symbol_record) - + lst.hash_size * 4 - + lst.module_count * sizeof (struct som_entry) - + sizeof (struct lst_header); - } + /* First entry in this hash chain. */ + hash_table[curr_lst_sym->symbol_key % lst.hash_size] + = (curr_lst_sym - lst_syms) * sizeof (struct lst_symbol_record) + + lst.hash_size * 4 + + lst.module_count * sizeof (struct som_entry) + + sizeof (struct lst_header); /* Keep track of the last symbol we added to this chain so we can easily update its next_entry pointer. */ @@ -6233,22 +6006,22 @@ som_bfd_ar_write_symbol_stuff (abfd, nsyms, string_size, lst, elength) /* Now scribble out the hash table. */ amt = lst.hash_size * 4; - if (bfd_bwrite ((PTR) hash_table, amt, abfd) != amt) + if (bfd_bwrite ((void *) hash_table, amt, abfd) != amt) goto error_return; /* Then the SOM dictionary. */ amt = lst.module_count * sizeof (struct som_entry); - if (bfd_bwrite ((PTR) som_dict, amt, abfd) != amt) + if (bfd_bwrite ((void *) som_dict, amt, abfd) != amt) goto error_return; /* The library symbols. */ amt = nsyms * sizeof (struct lst_symbol_record); - if (bfd_bwrite ((PTR) lst_syms, amt, abfd) != amt) + if (bfd_bwrite ((void *) lst_syms, amt, abfd) != amt) goto error_return; /* And finally the strings. */ amt = string_size; - if (bfd_bwrite ((PTR) strings, amt, abfd) != amt) + if (bfd_bwrite ((void *) strings, amt, abfd) != amt) goto error_return; if (hash_table != NULL) @@ -6283,12 +6056,11 @@ som_bfd_ar_write_symbol_stuff (abfd, nsyms, string_size, lst, elength) You'll never believe this is really how armaps are handled in SOM... */ static bfd_boolean -som_write_armap (abfd, elength, map, orl_count, stridx) - bfd *abfd; - unsigned int elength; - struct orl *map ATTRIBUTE_UNUSED; - unsigned int orl_count ATTRIBUTE_UNUSED; - int stridx ATTRIBUTE_UNUSED; +som_write_armap (bfd *abfd, + unsigned int elength, + struct orl *map ATTRIBUTE_UNUSED, + unsigned int orl_count ATTRIBUTE_UNUSED, + int stridx ATTRIBUTE_UNUSED) { bfd *curr_bfd; struct stat statbuf; @@ -6390,12 +6162,12 @@ som_write_armap (abfd, elength, map, orl_count, stridx) /* Scribble out the ar header. */ amt = sizeof (struct ar_hdr); - if (bfd_bwrite ((PTR) &hdr, amt, abfd) != amt) + if (bfd_bwrite ((void *) &hdr, amt, abfd) != amt) return FALSE; /* Now scribble out the lst header. */ amt = sizeof (struct lst_header); - if (bfd_bwrite ((PTR) &lst, amt, abfd) != amt) + if (bfd_bwrite ((void *) &lst, amt, abfd) != amt) return FALSE; /* Build and write the armap. */ @@ -6410,8 +6182,7 @@ som_write_armap (abfd, elength, map, orl_count, stridx) read it again later if we need it. */ static bfd_boolean -som_bfd_free_cached_info (abfd) - bfd *abfd; +som_bfd_free_cached_info (bfd *abfd) { asection *o; @@ -6422,7 +6193,7 @@ som_bfd_free_cached_info (abfd) /* Free the native string and symbol tables. */ FREE (obj_som_symtab (abfd)); FREE (obj_som_stringtab (abfd)); - for (o = abfd->sections; o != (asection *) NULL; o = o->next) + for (o = abfd->sections; o != NULL; o = o->next) { /* Free the native relocations. */ o->reloc_count = (unsigned) -1; @@ -6440,74 +6211,68 @@ som_bfd_free_cached_info (abfd) /* Linker support functions. */ static bfd_boolean -som_bfd_link_split_section (abfd, sec) - bfd *abfd ATTRIBUTE_UNUSED; - asection *sec; +som_bfd_link_split_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec) { - return (som_is_subspace (sec) && sec->size > 240000); + return som_is_subspace (sec) && sec->size > 240000; } -#define som_close_and_cleanup som_bfd_free_cached_info - -#define som_read_ar_hdr _bfd_generic_read_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_hash_table_free _bfd_generic_link_hash_table_free -#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_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 - -const bfd_target som_vec = { - "som", /* name */ +#define som_close_and_cleanup som_bfd_free_cached_info +#define som_read_ar_hdr _bfd_generic_read_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_hash_table_free _bfd_generic_link_hash_table_free +#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_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_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 + +const bfd_target som_vec = +{ + "som", /* Name. */ bfd_target_som_flavour, - BFD_ENDIAN_BIG, /* target byte order */ - BFD_ENDIAN_BIG, /* target headers byte order */ - (HAS_RELOC | EXEC_P | /* object flags */ + BFD_ENDIAN_BIG, /* Target byte order. */ + BFD_ENDIAN_BIG, /* Target headers byte order. */ + (HAS_RELOC | EXEC_P | /* Object flags. */ HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED | DYNAMIC), (SEC_CODE | SEC_DATA | SEC_ROM | SEC_HAS_CONTENTS | SEC_LINK_ONCE - | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */ + | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* Section flags. */ -/* leading_symbol_char: is the first char of a user symbol - predictable, and if so what is it. */ + /* Leading_symbol_char: is the first char of a user symbol + predictable, and if so what is it. */ 0, - '/', /* ar_pad_char */ - 14, /* ar_max_namelen */ + '/', /* AR_pad_char. */ + 14, /* AR_max_namelen. */ bfd_getb64, bfd_getb_signed_64, bfd_putb64, bfd_getb32, bfd_getb_signed_32, bfd_putb32, - bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* data */ + bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Data. */ bfd_getb64, bfd_getb_signed_64, bfd_putb64, bfd_getb32, bfd_getb_signed_32, bfd_putb32, - bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* hdrs */ + bfd_getb16, bfd_getb_signed_16, bfd_putb16, /* Headers. */ {_bfd_dummy_target, - som_object_p, /* bfd_check_format */ + som_object_p, /* bfd_check_format. */ bfd_generic_archive_p, _bfd_dummy_target }, @@ -6537,7 +6302,7 @@ const bfd_target som_vec = { NULL, - (PTR) 0 + NULL }; #endif /* HOST_HPPAHPUX || HOST_HPPABSD || HOST_HPPAOSF */