diff options
-rw-r--r-- | bfd/ChangeLog | 2 | ||||
-rw-r--r-- | bfd/mmo.c | 489 |
2 files changed, 170 insertions, 321 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 767c04d..2c7e0f7 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,7 @@ 2004-10-24 Hans-Peter Nilsson <hp@bitrange.com> + * mmo.c: Adjust to ISO C. + * mmo.c (mmo_write_section_description): New function broken out of mmo_internal_write_section. (mmo_internal_write_section): For each of .text and .data, call @@ -260,7 +260,7 @@ enum mmo_sym_type { mmo_reg_sym, mmo_undef_sym, mmo_data_sym, mmo_abs_sym}; struct mmo_symbol { struct mmo_symbol *next; - const char *name; + char *name; bfd_vma value; enum mmo_sym_type sym_type; unsigned int serno; @@ -355,119 +355,70 @@ struct mmo_find_sec_info bfd_vma addr; }; -static bfd_boolean mmo_bfd_copy_private_bfd_data - PARAMS ((bfd *, bfd *)); -static void mmo_write_section_unless_reg_contents - PARAMS ((bfd *, asection *, PTR)); -static void mmo_find_sec_w_addr - PARAMS ((bfd *, asection *, PTR)); -static void mmo_find_sec_w_addr_grow - PARAMS ((bfd *, asection *, PTR)); -static asection *mmo_make_section - PARAMS ((bfd *, const char *)); -static void mmo_get_symbol_info - PARAMS ((bfd *, asymbol *, symbol_info *)); -static void mmo_print_symbol - PARAMS ((bfd *, PTR, asymbol *, bfd_print_symbol_type)); -static void mmo_init - PARAMS ((void)); -static bfd_boolean mmo_mkobject - PARAMS ((bfd *)); -static bfd_boolean mmo_scan - PARAMS ((bfd *)); -static asection *mmo_decide_section - PARAMS ((bfd *, bfd_vma)); -static asection *mmo_get_generic_spec_data_section - PARAMS ((bfd *, int)); -static asection *mmo_get_spec_section - PARAMS ((bfd *, int)); -static INLINE bfd_byte *mmo_get_loc - PARAMS ((asection *, bfd_vma, int)); -static void mmo_xore_64 - PARAMS ((asection *, bfd_vma vma, bfd_vma value)); -static void mmo_xore_32 - PARAMS ((asection *, bfd_vma vma, unsigned int)); -static void mmo_xore_16 - PARAMS ((asection *, bfd_vma vma, unsigned int)); -static const bfd_target *mmo_object_p - PARAMS ((bfd *)); -static void mmo_map_set_sizes - PARAMS ((bfd *, asection *, PTR)); -static bfd_boolean mmo_get_symbols - PARAMS ((bfd *)); -static bfd_boolean mmo_create_symbol - PARAMS ((bfd *, const char *, bfd_vma, enum mmo_sym_type, unsigned int)); -static bfd_boolean mmo_get_section_contents - PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); -static long mmo_get_symtab_upper_bound - PARAMS ((bfd *)); -static long mmo_canonicalize_symtab - PARAMS ((bfd *, asymbol **)); -static void mmo_get_symbol_info - PARAMS ((bfd *, asymbol *, symbol_info *)); -static void mmo_print_symbol - PARAMS ((bfd *, PTR, asymbol *, bfd_print_symbol_type)); -static bfd_boolean mmo_set_section_contents - PARAMS ((bfd *, sec_ptr, const PTR, file_ptr, bfd_size_type)); -static int mmo_sizeof_headers - PARAMS ((bfd *, bfd_boolean)); -static long mmo_get_reloc_upper_bound - PARAMS ((bfd *, asection *)); - -static bfd_boolean mmo_internal_write_header - PARAMS ((bfd *)); -static bfd_boolean mmo_internal_write_post - PARAMS ((bfd *, int, asection *)); -static bfd_boolean mmo_internal_add_3_sym - PARAMS ((bfd *, struct mmo_symbol_trie *, const struct mmo_symbol *)); -static unsigned int mmo_internal_3_length - PARAMS ((bfd *, struct mmo_symbol_trie *)); -static void mmo_internal_3_dump - PARAMS ((bfd *, struct mmo_symbol_trie *)); -static void mmo_beb128_out - PARAMS ((bfd *, int, int)); -static bfd_boolean mmo_internal_write_section - PARAMS ((bfd *, asection *)); -static void mmo_write_tetra - PARAMS ((bfd *, unsigned int)); -static void mmo_write_tetra_raw - PARAMS ((bfd *, unsigned int)); -static void mmo_write_octa - PARAMS ((bfd *, bfd_vma)); -static void mmo_write_octa_raw - PARAMS ((bfd *, bfd_vma)); -static bfd_boolean mmo_write_chunk - PARAMS ((bfd *, const bfd_byte *, unsigned int)); -static bfd_boolean mmo_flush_chunk - PARAMS ((bfd *)); -static bfd_boolean mmo_write_loc_chunk - PARAMS ((bfd *, bfd_vma, const bfd_byte *, unsigned int, bfd_vma *)); -static bfd_boolean mmo_write_chunk_list - PARAMS ((bfd *, mmo_data_list_type *)); -static bfd_boolean mmo_write_loc_chunk_list - PARAMS ((bfd *, mmo_data_list_type *)); -static bfd_boolean mmo_write_symbols_and_terminator - PARAMS ((bfd *)); -static flagword mmo_sec_flags_from_bfd_flags - PARAMS ((flagword)); -static flagword bfd_sec_flags_from_mmo_flags - PARAMS ((flagword)); -static bfd_byte mmo_get_byte - PARAMS ((bfd *)); -static void mmo_write_byte - PARAMS ((bfd *, bfd_byte)); -static bfd_boolean mmo_new_section_hook - PARAMS ((bfd *, asection *)); -static int mmo_sort_mmo_symbols - PARAMS ((const PTR, const PTR)); -static bfd_boolean mmo_write_object_contents - PARAMS ((bfd *)); -static long mmo_canonicalize_reloc - PARAMS ((bfd *, sec_ptr, arelent **, asymbol **)); -static bfd_boolean mmo_write_section_description - PARAMS ((bfd *, asection *)); -static bfd_boolean mmo_has_leading_or_trailing_zero_tetra_p - PARAMS ((bfd *, asection *)); +static bfd_boolean mmo_bfd_copy_private_bfd_data (bfd *, bfd *); +static void mmo_write_section_unless_reg_contents (bfd *, asection *, void *); +static void mmo_find_sec_w_addr (bfd *, asection *, void *); +static void mmo_find_sec_w_addr_grow (bfd *, asection *, void *); +static asection *mmo_make_section (bfd *, const char *); +static void mmo_get_symbol_info (bfd *, asymbol *, symbol_info *); +static void mmo_print_symbol (bfd *, void *, asymbol *, + bfd_print_symbol_type); +static void mmo_init (void); +static bfd_boolean mmo_mkobject (bfd *); +static bfd_boolean mmo_scan (bfd *); +static asection *mmo_decide_section (bfd *, bfd_vma); +static asection *mmo_get_generic_spec_data_section (bfd *, int); +static asection *mmo_get_spec_section (bfd *, int); +static INLINE bfd_byte *mmo_get_loc (asection *, bfd_vma, int); +static void mmo_xore_64 (asection *, bfd_vma vma, bfd_vma value); +static void mmo_xore_32 (asection *, bfd_vma vma, unsigned int); +static void mmo_xore_16 (asection *, bfd_vma vma, unsigned int); +static const bfd_target *mmo_object_p (bfd *); +static void mmo_map_set_sizes (bfd *, asection *, void *); +static bfd_boolean mmo_get_symbols (bfd *); +static bfd_boolean mmo_create_symbol (bfd *, const char *, bfd_vma, + enum mmo_sym_type, unsigned int); +static bfd_boolean mmo_get_section_contents (bfd *, asection *, void *, + file_ptr, bfd_size_type); +static long mmo_get_symtab_upper_bound (bfd *); +static long mmo_canonicalize_symtab (bfd *, asymbol **); +static void mmo_get_symbol_info (bfd *, asymbol *, symbol_info *); +static void mmo_print_symbol (bfd *, void *, asymbol *, + bfd_print_symbol_type); +static bfd_boolean mmo_set_section_contents (bfd *, sec_ptr, const void *, + file_ptr, bfd_size_type); +static int mmo_sizeof_headers (bfd *, bfd_boolean); +static long mmo_get_reloc_upper_bound (bfd *, asection *); +static bfd_boolean mmo_internal_write_header (bfd *); +static bfd_boolean mmo_internal_write_post (bfd *, int, asection *); +static bfd_boolean mmo_internal_add_3_sym (bfd *, struct mmo_symbol_trie *, + const struct mmo_symbol *); +static unsigned int mmo_internal_3_length (bfd *, struct mmo_symbol_trie *); +static void mmo_internal_3_dump (bfd *, struct mmo_symbol_trie *); +static void mmo_beb128_out (bfd *, int, int); +static bfd_boolean mmo_internal_write_section (bfd *, asection *); +static void mmo_write_tetra (bfd *, unsigned int); +static void mmo_write_tetra_raw (bfd *, unsigned int); +static void mmo_write_octa (bfd *, bfd_vma); +static void mmo_write_octa_raw (bfd *, bfd_vma); +static bfd_boolean mmo_write_chunk (bfd *, const bfd_byte *, unsigned int); +static bfd_boolean mmo_flush_chunk (bfd *); +static bfd_boolean mmo_write_loc_chunk (bfd *, bfd_vma, const bfd_byte *, + unsigned int, bfd_vma *); +static bfd_boolean mmo_write_chunk_list (bfd *, mmo_data_list_type *); +static bfd_boolean mmo_write_loc_chunk_list (bfd *, mmo_data_list_type *); +static bfd_boolean mmo_write_symbols_and_terminator (bfd *); +static flagword mmo_sec_flags_from_bfd_flags (flagword); +static flagword bfd_sec_flags_from_mmo_flags (flagword); +static bfd_byte mmo_get_byte (bfd *); +static void mmo_write_byte (bfd *, bfd_byte); +static bfd_boolean mmo_new_section_hook (bfd *, asection *); +static int mmo_sort_mmo_symbols (const void *, const void *); +static bfd_boolean mmo_write_object_contents (bfd *); +static long mmo_canonicalize_reloc (bfd *, sec_ptr, arelent **, asymbol **); +static bfd_boolean mmo_write_section_description (bfd *, asection *); +static bfd_boolean mmo_has_leading_or_trailing_zero_tetra_p (bfd *, + asection *); /* Global "const" variables initialized once. Must not depend on particular input or caller; put such things into the bfd or elsewhere. @@ -491,9 +442,7 @@ char valid_mmo_symbol_character_set[/* A-Z a-z (we assume consecutive one, new memory for the name is allocated. */ static asection * -mmo_make_section (abfd, secname) - bfd *abfd; - const char *secname; +mmo_make_section (bfd *abfd, const char *secname) { asection *sec = bfd_get_section_by_name (abfd, secname); @@ -520,7 +469,7 @@ mmo_make_section (abfd, secname) here, nor must it be static. Add it to tdata information instead. */ static void -mmo_init () +mmo_init (void) { static bfd_boolean inited = FALSE; int i = 0; @@ -543,8 +492,7 @@ mmo_init () /* Check whether an existing file is an mmo file. */ static const bfd_target * -mmo_object_p (abfd) - bfd *abfd; +mmo_object_p (bfd *abfd) { struct stat statbuf; bfd_byte b[4]; @@ -611,8 +559,7 @@ mmo_object_p (abfd) /* Set up the mmo tdata information. */ static bfd_boolean -mmo_mkobject (abfd) - bfd *abfd; +mmo_mkobject (bfd *abfd) { mmo_init (); @@ -636,9 +583,7 @@ mmo_mkobject (abfd) } static bfd_boolean -mmo_bfd_copy_private_bfd_data (ibfd, obfd) - bfd *ibfd; - bfd *obfd; +mmo_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd) { if (bfd_get_flavour (ibfd) != bfd_target_mmo_flavour || bfd_get_flavour (obfd) != bfd_target_mmo_flavour) @@ -656,10 +601,7 @@ mmo_bfd_copy_private_bfd_data (ibfd, obfd) bfd_map_over_sections. */ static void -mmo_find_sec_w_addr (abfd, sec, p) - bfd *abfd ATTRIBUTE_UNUSED; - asection *sec; - PTR p; +mmo_find_sec_w_addr (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *p) { struct mmo_find_sec_info *infop = (struct mmo_find_sec_info *) p; bfd_vma vma = bfd_get_section_vma (abfd, sec); @@ -674,10 +616,7 @@ mmo_find_sec_w_addr (abfd, sec, p) } static void -mmo_find_sec_w_addr_grow (abfd, sec, p) - bfd *abfd ATTRIBUTE_UNUSED; - asection *sec; - PTR p; +mmo_find_sec_w_addr_grow (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *p) { struct mmo_find_sec_info *infop = (struct mmo_find_sec_info *) p; bfd_vma vma = bfd_get_section_vma (abfd, sec); @@ -697,9 +636,7 @@ mmo_find_sec_w_addr_grow (abfd, sec, p) increasing number. */ static asection * -mmo_decide_section (abfd, vma) - bfd *abfd; - bfd_vma vma; +mmo_decide_section (bfd *abfd, bfd_vma vma) { asection *sec = NULL; char sec_name[sizeof (".MMIX.sec.") + 20]; @@ -768,10 +705,7 @@ mmo_decide_section (abfd, vma) /* Xor in a 64-bit value VALUE at VMA. */ static INLINE void -mmo_xore_64 (sec, vma, value) - asection *sec; - bfd_vma vma; - bfd_vma value; +mmo_xore_64 (asection *sec, bfd_vma vma, bfd_vma value) { bfd_byte *loc = mmo_get_loc (sec, vma, 8); bfd_vma prev = bfd_get_64 (sec->owner, loc); @@ -783,10 +717,7 @@ mmo_xore_64 (sec, vma, value) /* Xor in a 32-bit value VALUE at VMA. */ static INLINE void -mmo_xore_32 (sec, vma, value) - asection *sec; - bfd_vma vma; - unsigned int value; +mmo_xore_32 (asection *sec, bfd_vma vma, unsigned int value) { bfd_byte *loc = mmo_get_loc (sec, vma, 4); unsigned int prev = bfd_get_32 (sec->owner, loc); @@ -798,10 +729,7 @@ mmo_xore_32 (sec, vma, value) /* Xor in a 16-bit value VALUE at VMA. */ static INLINE void -mmo_xore_16 (sec, vma, value) - asection *sec; - bfd_vma vma; - unsigned int value; +mmo_xore_16 (asection *sec, bfd_vma vma, unsigned int value) { bfd_byte *loc = mmo_get_loc (sec, vma, 2); unsigned int prev = bfd_get_16 (sec->owner, loc); @@ -813,24 +741,20 @@ mmo_xore_16 (sec, vma, value) /* Write a 32-bit word to output file, no lop_quote generated. */ static INLINE void -mmo_write_tetra_raw (abfd, value) - bfd *abfd; - unsigned int value; +mmo_write_tetra_raw (bfd *abfd, unsigned int value) { bfd_byte buf[4]; bfd_put_32 (abfd, value, buf); - if (bfd_bwrite ((PTR) buf, 4, abfd) != 4) + if (bfd_bwrite (buf, 4, abfd) != 4) abfd->tdata.mmo_data->have_error = TRUE; } /* Write a 32-bit word to output file; lop_quote if necessary. */ static INLINE void -mmo_write_tetra (abfd, value) - bfd *abfd; - unsigned int value; +mmo_write_tetra (bfd *abfd, unsigned int value) { if (((value >> 24) & 0xff) == LOP) mmo_write_tetra_raw (abfd, LOP_QUOTE_NEXT); @@ -841,9 +765,7 @@ mmo_write_tetra (abfd, value) /* Write a 64-bit word to output file, perhaps with lop_quoting. */ static INLINE void -mmo_write_octa (abfd, value) - bfd *abfd; - bfd_vma value; +mmo_write_octa (bfd *abfd, bfd_vma value) { mmo_write_tetra (abfd, (unsigned int) (value >> 32)); mmo_write_tetra (abfd, (unsigned int) value); @@ -852,9 +774,7 @@ mmo_write_octa (abfd, value) /* Write a 64-bit word to output file, without lop_quoting. */ static INLINE void -mmo_write_octa_raw (abfd, value) - bfd *abfd; - bfd_vma value; +mmo_write_octa_raw (bfd *abfd, bfd_vma value) { mmo_write_tetra_raw (abfd, (unsigned int) (value >> 32)); mmo_write_tetra_raw (abfd, (unsigned int) value); @@ -864,10 +784,7 @@ mmo_write_octa_raw (abfd, value) sequence, followed by a call to mmo_flush_chunk. */ static INLINE bfd_boolean -mmo_write_chunk (abfd, loc, len) - bfd *abfd; - const bfd_byte *loc; - unsigned int len; +mmo_write_chunk (bfd *abfd, const bfd_byte *loc, unsigned int len) { bfd_boolean retval = TRUE; @@ -895,7 +812,7 @@ mmo_write_chunk (abfd, loc, len) retval = (retval && ! abfd->tdata.mmo_data->have_error - && 4 == bfd_bwrite ((PTR) loc, 4, abfd)); + && 4 == bfd_bwrite (loc, 4, abfd)); loc += 4; len -= 4; @@ -916,8 +833,7 @@ mmo_write_chunk (abfd, loc, len) 4 bytes. */ static INLINE bfd_boolean -mmo_flush_chunk (abfd) - bfd *abfd; +mmo_flush_chunk (bfd *abfd) { if (abfd->tdata.mmo_data->byte_no != 0) { @@ -934,9 +850,7 @@ mmo_flush_chunk (abfd) /* Same, but from a list. */ static INLINE bfd_boolean -mmo_write_chunk_list (abfd, datap) - bfd *abfd; - mmo_data_list_type *datap; +mmo_write_chunk_list (bfd *abfd, mmo_data_list_type *datap) { for (; datap != NULL; datap = datap->next) if (! mmo_write_chunk (abfd, datap->data, datap->size)) @@ -950,12 +864,8 @@ mmo_write_chunk_list (abfd, datap) output if different than *LAST_VMAP, which is updated after this call. */ static bfd_boolean -mmo_write_loc_chunk (abfd, vma, loc, len, last_vmap) - bfd *abfd; - bfd_vma vma; - const bfd_byte *loc; - unsigned int len; - bfd_vma *last_vmap; +mmo_write_loc_chunk (bfd *abfd, bfd_vma vma, const bfd_byte *loc, + unsigned int len, bfd_vma *last_vmap) { /* Find an initial and trailing section of zero tetras; we don't need to write out zeros. FIXME: When we do this, we should emit section size @@ -1001,9 +911,7 @@ mmo_write_loc_chunk (abfd, vma, loc, len, last_vmap) /* Same, but from a list. */ static INLINE bfd_boolean -mmo_write_loc_chunk_list (abfd, datap) - bfd *abfd; - mmo_data_list_type *datap; +mmo_write_loc_chunk_list (bfd *abfd, mmo_data_list_type *datap) { /* Get an address different than the address of the first chunk. */ bfd_vma last_vma = datap ? datap->where - 1 : 0; @@ -1019,9 +927,7 @@ mmo_write_loc_chunk_list (abfd, datap) /* Make a .MMIX.spec_data.N section. */ static asection * -mmo_get_generic_spec_data_section (abfd, spec_data_number) - bfd *abfd; - int spec_data_number; +mmo_get_generic_spec_data_section (bfd *abfd, int spec_data_number) { asection *sec; char secname[sizeof (MMIX_OTHER_SPEC_SECTION_PREFIX) + 20] @@ -1039,9 +945,7 @@ mmo_get_generic_spec_data_section (abfd, spec_data_number) ourselves, parse some of its data to get at the section name. */ static asection * -mmo_get_spec_section (abfd, spec_data_number) - bfd *abfd; - int spec_data_number; +mmo_get_spec_section (bfd *abfd, int spec_data_number) { bfd_byte *secname; asection *sec; @@ -1204,8 +1108,7 @@ mmo_get_spec_section (abfd, spec_data_number) /* Read a byte, but read from file in multiples of 32-bit words. */ static bfd_byte -mmo_get_byte (abfd) - bfd *abfd; +mmo_get_byte (bfd *abfd) { bfd_byte retval; @@ -1231,9 +1134,7 @@ mmo_get_byte (abfd) /* Write a byte, in multiples of 32-bit words. */ static void -mmo_write_byte (abfd, value) - bfd *abfd; - bfd_byte value; +mmo_write_byte (bfd *abfd, bfd_byte value) { abfd->tdata.mmo_data->buf[(abfd->tdata.mmo_data->byte_no++ % 4)] = value; if ((abfd->tdata.mmo_data->byte_no % 4) == 0) @@ -1247,12 +1148,8 @@ mmo_write_byte (abfd, value) /* Create a symbol. */ static bfd_boolean -mmo_create_symbol (abfd, symname, addr, sym_type, serno) - bfd *abfd; - const char *symname; - bfd_vma addr; - enum mmo_sym_type sym_type; - unsigned int serno; +mmo_create_symbol (bfd *abfd, const char *symname, bfd_vma addr, enum + mmo_sym_type sym_type, unsigned int serno) { struct mmo_symbol *n; @@ -1264,7 +1161,7 @@ mmo_create_symbol (abfd, symname, addr, sym_type, serno) if (n->name == NULL) return FALSE; - strcpy ((PTR) n->name, symname); + strcpy (n->name, symname); n->value = addr; n->sym_type = sym_type; @@ -1299,8 +1196,7 @@ mmo_create_symbol (abfd, symname, addr, sym_type, serno) /* Read in symbols. */ static bfd_boolean -mmo_get_symbols (abfd) - bfd *abfd; +mmo_get_symbols (bfd *abfd) { /* INODE @@ -1433,8 +1329,8 @@ SUBSECTION [abfd->tdata.mmo_data->symbol_position] = 0; (*_bfd_error_handler) - (_("%s: unsupported wide character sequence\ - 0x%02X 0x%02X after symbol name starting with `%s'\n"), + (_("%s: unsupported wide character sequence" + " 0x%02X 0x%02X after symbol name starting with `%s'\n"), bfd_get_filename (abfd), c, c2, abfd->tdata.mmo_data->lop_stab_symbol); bfd_set_error (bfd_error_bad_value); @@ -1516,10 +1412,7 @@ SUBSECTION MMO_SEC_CONTENTS_CHUNK_SIZE. */ static INLINE bfd_byte * -mmo_get_loc (sec, vma, size) - asection *sec; - bfd_vma vma; - int size; +mmo_get_loc (asection *sec, bfd_vma vma, int size) { bfd_size_type allocated_size; struct mmo_section_data_struct *sdatap = mmo_section_data (sec); @@ -1619,10 +1512,8 @@ mmo_get_loc (sec, vma, size) /* Set sizes once we've read in all sections. */ static void -mmo_map_set_sizes (abfd, sec, ignored) - bfd *abfd ATTRIBUTE_UNUSED; - asection *sec; - PTR ignored ATTRIBUTE_UNUSED; +mmo_map_set_sizes (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, + void *ignored ATTRIBUTE_UNUSED) { sec->lma = sec->vma; } @@ -1630,8 +1521,7 @@ mmo_map_set_sizes (abfd, sec, ignored) /* Read the mmo file and turn it into sections. */ static bfd_boolean -mmo_scan (abfd) - bfd *abfd; +mmo_scan (bfd *abfd) { unsigned int i; unsigned int lineno = 1; @@ -1879,8 +1769,8 @@ mmo_scan (abfd) if (file_names[y] != NULL) { (*_bfd_error_handler) - (_("%s: invalid mmo file: file number %d `%s',\ - was already entered as `%s'\n"), + (_("%s: invalid mmo file: file number %d `%s'," + " was already entered as `%s'\n"), bfd_get_filename (abfd), y, fname, file_names[y]); bfd_set_error (bfd_error_bad_value); goto error_return; @@ -1892,8 +1782,8 @@ mmo_scan (abfd) if (file_names[y] == NULL) { (*_bfd_error_handler) - (_("%s: invalid mmo file: file name for number %d\ - was not specified before use\n"), + (_("%s: invalid mmo file: file name for number %d" + " was not specified before use\n"), bfd_get_filename (abfd), y); bfd_set_error (bfd_error_bad_value); goto error_return; @@ -1998,8 +1888,8 @@ mmo_scan (abfd) if (y != 0 || z != 0) { (*_bfd_error_handler) - (_("%s: invalid mmo file: fields y and z of lop_stab\ - non-zero, y: %d, z: %d\n"), + (_("%s: invalid mmo file: fields y and z of lop_stab" + " non-zero, y: %d, z: %d\n"), bfd_get_filename (abfd), y, z); bfd_set_error (bfd_error_bad_value); goto error_return; @@ -2034,8 +1924,8 @@ mmo_scan (abfd) if (statbuf.st_size != curpos) { (*_bfd_error_handler) - (_("%s: invalid mmo file: lop_end not last item in\ - file\n"), + (_("%s: invalid mmo file: lop_end not last item in" + " file\n"), bfd_get_filename (abfd)); bfd_set_error (bfd_error_bad_value); goto error_return; @@ -2047,8 +1937,9 @@ mmo_scan (abfd) if ((long) (y * 256 + z) * 4 != (curpos - stab_loc) - 4) { (*_bfd_error_handler) - (_("%s: invalid mmo file: YZ of lop_end (%ld)\ - not equal to the number of tetras to the preceding lop_stab (%ld)\n"), + (_("%s: invalid mmo file: YZ of lop_end (%ld)" + " not equal to the number of tetras to the preceding" + " lop_stab (%ld)\n"), bfd_get_filename (abfd), (long) (y * 256 + z), (curpos - stab_loc - 4)/4); bfd_set_error (bfd_error_bad_value); @@ -2115,14 +2006,12 @@ mmo_scan (abfd) we point out the shape of allocated section contents. */ static bfd_boolean -mmo_new_section_hook (abfd, newsect) - bfd *abfd ATTRIBUTE_UNUSED; - asection *newsect; +mmo_new_section_hook (bfd *abfd ATTRIBUTE_UNUSED, asection *newsect) { /* We zero-fill all fields and assume NULL is represented by an all zero-bit pattern. */ newsect->used_by_bfd = - (PTR) bfd_zalloc (abfd, sizeof (struct mmo_section_data_struct)); + bfd_zalloc (abfd, sizeof (struct mmo_section_data_struct)); if (!newsect->used_by_bfd) return FALSE; @@ -2136,12 +2025,11 @@ mmo_new_section_hook (abfd, newsect) contents. */ static bfd_boolean -mmo_get_section_contents (abfd, sec, location, offset, bytes_to_do) - bfd *abfd ATTRIBUTE_UNUSED; - asection *sec ATTRIBUTE_UNUSED; - PTR location ATTRIBUTE_UNUSED; - file_ptr offset ATTRIBUTE_UNUSED; - bfd_size_type bytes_to_do ATTRIBUTE_UNUSED; +mmo_get_section_contents (bfd *abfd ATTRIBUTE_UNUSED, + asection *sec, + void * location, + file_ptr offset, + bfd_size_type bytes_to_do) { /* Iterate over diminishing chunk sizes, copying contents, like mmo_set_section_contents. */ @@ -2173,8 +2061,7 @@ mmo_get_section_contents (abfd, sec, location, offset, bytes_to_do) /* Return the amount of memory needed to read the symbol table. */ static long -mmo_get_symtab_upper_bound (abfd) - bfd *abfd ATTRIBUTE_UNUSED; +mmo_get_symtab_upper_bound (bfd *abfd) { return (abfd->symcount + 1) * sizeof (asymbol *); } @@ -2182,9 +2069,7 @@ mmo_get_symtab_upper_bound (abfd) /* Sort mmo symbols by serial number. */ static int -mmo_sort_mmo_symbols (arg1, arg2) - const PTR arg1; - const PTR arg2; +mmo_sort_mmo_symbols (const void *arg1, const void *arg2) { const struct mmo_symbol *sym1 = *(const struct mmo_symbol **) arg1; const struct mmo_symbol *sym2 = *(const struct mmo_symbol **) arg2; @@ -2202,9 +2087,7 @@ mmo_sort_mmo_symbols (arg1, arg2) /* Translate the symbol table. */ static long -mmo_canonicalize_symtab (abfd, alocation) - bfd *abfd; - asymbol **alocation; +mmo_canonicalize_symtab (bfd *abfd, asymbol **alocation) { unsigned int symcount = bfd_get_symcount (abfd); asymbol *csymbols; @@ -2313,20 +2196,15 @@ mmo_canonicalize_symtab (abfd, alocation) /* Get information about a symbol. */ static void -mmo_get_symbol_info (ignore_abfd, symbol, ret) - bfd *ignore_abfd ATTRIBUTE_UNUSED; - asymbol *symbol; - symbol_info *ret; +mmo_get_symbol_info (bfd *ignore_abfd ATTRIBUTE_UNUSED, + asymbol *symbol, symbol_info *ret) { bfd_symbol_info (symbol, ret); } static void -mmo_print_symbol (abfd, afile, symbol, how) - bfd *abfd; - PTR afile; - asymbol *symbol; - bfd_print_symbol_type how; +mmo_print_symbol (bfd *abfd, void *afile, asymbol *symbol, + bfd_print_symbol_type how) { FILE *file = (FILE *) afile; @@ -2336,7 +2214,7 @@ mmo_print_symbol (abfd, afile, symbol, how) fprintf (file, "%s", symbol->name); break; default: - bfd_print_symbol_vandf (abfd, (PTR) file, symbol); + bfd_print_symbol_vandf (abfd, file, symbol); fprintf (file, " %-5s %s", symbol->section->name, @@ -2348,9 +2226,8 @@ mmo_print_symbol (abfd, afile, symbol, how) size of header information is irrelevant. */ static int -mmo_sizeof_headers (abfd, exec) - bfd *abfd ATTRIBUTE_UNUSED; - bfd_boolean exec ATTRIBUTE_UNUSED; +mmo_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED, + bfd_boolean exec ATTRIBUTE_UNUSED) { return 0; } @@ -2358,8 +2235,7 @@ mmo_sizeof_headers (abfd, exec) /* Write the (section-neutral) file preamble. */ static bfd_boolean -mmo_internal_write_header (abfd) - bfd *abfd; +mmo_internal_write_header (bfd *abfd) { const char lop_pre_bfd[] = { LOP, LOP_PRE, 1, 1}; @@ -2379,10 +2255,7 @@ mmo_internal_write_header (abfd) start-address. */ static bfd_boolean -mmo_internal_write_post (abfd, z, sec) - bfd *abfd; - int z; - asection *sec; +mmo_internal_write_post (bfd *abfd, int z, asection *sec) { int i; bfd_byte buf[8]; @@ -2408,8 +2281,7 @@ mmo_internal_write_post (abfd, z, sec) get bitten by BFD flag number changes. */ static flagword -mmo_sec_flags_from_bfd_flags (flags) - flagword flags; +mmo_sec_flags_from_bfd_flags (flagword flags) { flagword oflags = 0; @@ -2436,8 +2308,7 @@ mmo_sec_flags_from_bfd_flags (flags) } static flagword -bfd_sec_flags_from_mmo_flags (flags) - flagword flags; +bfd_sec_flags_from_mmo_flags (flagword flags) { flagword oflags = 0; @@ -2467,9 +2338,7 @@ bfd_sec_flags_from_mmo_flags (flags) is 0. */ static bfd_boolean -mmo_has_leading_or_trailing_zero_tetra_p (abfd, sec) - bfd *abfd; - asection *sec; +mmo_has_leading_or_trailing_zero_tetra_p (bfd *abfd, asection *sec) { bfd_vma secaddr = bfd_get_section_vma (abfd, sec); @@ -2487,9 +2356,7 @@ mmo_has_leading_or_trailing_zero_tetra_p (abfd, sec) /* Write a section. */ static bfd_boolean -mmo_internal_write_section (abfd, sec) - bfd *abfd; - asection *sec; +mmo_internal_write_section (bfd *abfd, asection *sec) { /* We do it differently depending on what section this is: @@ -2583,9 +2450,7 @@ mmo_internal_write_section (abfd, sec) /* Write the description of a section, extended-mmo-style. */ static bfd_boolean -mmo_write_section_description (abfd, sec) - bfd *abfd; - asection *sec; +mmo_write_section_description (bfd *abfd, asection *sec) { /* Keep the following document-comment formatted the way it is. */ /* @@ -2699,12 +2564,9 @@ EXAMPLE /* We save up all data before output. */ static bfd_boolean -mmo_set_section_contents (abfd, sec, location, offset, bytes_to_do) - bfd *abfd ATTRIBUTE_UNUSED; - sec_ptr sec; - const PTR location; - file_ptr offset; - bfd_size_type bytes_to_do; +mmo_set_section_contents (bfd *abfd ATTRIBUTE_UNUSED, sec_ptr sec, + const void *location, file_ptr offset, + bfd_size_type bytes_to_do) { /* Iterate over diminishing chunk sizes, copying contents. */ while (bytes_to_do) @@ -2735,10 +2597,8 @@ mmo_set_section_contents (abfd, sec, location, offset, bytes_to_do) /* Add a symbol to a trie-tree. */ static bfd_boolean -mmo_internal_add_3_sym (abfd, rootp, symp) - bfd *abfd; - struct mmo_symbol_trie *rootp; - const struct mmo_symbol *symp; +mmo_internal_add_3_sym (bfd *abfd, struct mmo_symbol_trie *rootp, + const struct mmo_symbol *symp) { const char *name = symp->name; struct mmo_symbol_trie *trie = rootp; @@ -2797,9 +2657,7 @@ mmo_internal_add_3_sym (abfd, rootp, symp) /* Find out the length of the serialized version of a trie in bytes. */ static unsigned int -mmo_internal_3_length (abfd, trie) - bfd *abfd; - struct mmo_symbol_trie *trie; +mmo_internal_3_length (bfd *abfd, struct mmo_symbol_trie *trie) { /* First, one for the control byte. */ unsigned int length = 1; @@ -2859,10 +2717,7 @@ mmo_internal_3_length (abfd, trie) beb128. Using a helper function and recursion simplifies debugging. */ static void -mmo_beb128_out (abfd, serno, marker) - bfd *abfd; - int serno; - int marker; +mmo_beb128_out (bfd *abfd, int serno, int marker) { if (serno & ~0x7f) mmo_beb128_out (abfd, serno >> 7, 0); @@ -2872,9 +2727,7 @@ mmo_beb128_out (abfd, serno, marker) /* Serialize a trie. */ static void -mmo_internal_3_dump (abfd, trie) - bfd *abfd; - struct mmo_symbol_trie *trie; +mmo_internal_3_dump (bfd *abfd, struct mmo_symbol_trie *trie) { bfd_byte control = 0; @@ -2967,8 +2820,7 @@ mmo_internal_3_dump (abfd, trie) /* Write symbols in mmo format. Also write the lop_end terminator. */ static bfd_boolean -mmo_write_symbols_and_terminator (abfd) - bfd *abfd; +mmo_write_symbols_and_terminator (bfd *abfd) { int count = bfd_get_symcount (abfd); asymbol *maintable[2]; @@ -3035,8 +2887,8 @@ mmo_write_symbols_and_terminator (abfd) sprintf_vma (vmas_start, vma_start); (*_bfd_error_handler) - (_("%s: Bad symbol definition: `Main' set to %s rather\ - than the start address %s\n"), + (_("%s: Bad symbol definition: `Main' set to %s rather" + " than the start address %s\n"), bfd_get_filename (abfd), vmas_main, vmas_start); bfd_set_error (bfd_error_bad_value); return FALSE; @@ -3068,7 +2920,9 @@ mmo_write_symbols_and_terminator (abfd) struct mmo_symbol sym; memset (&sym, 0, sizeof (sym)); - sym.name = s->name; + /* Need to strip const here; strdup:ing would leak and the + existing string must be safe to reuse. */ + sym.name = (char *) s->name; sym.value = s->value + s->section->output_section->vma @@ -3125,8 +2979,8 @@ mmo_write_symbols_and_terminator (abfd) struct mmo_symbol sym; (*_bfd_error_handler) - (_("%s: warning: symbol table too large for mmo, larger than 65535\ - 32-bit words: %d. Only `Main' will be emitted.\n"), + (_("%s: warning: symbol table too large for mmo, larger than 65535" + " 32-bit words: %d. Only `Main' will be emitted.\n"), bfd_get_filename (abfd), trie_len); memset (&sym, 0, sizeof (sym)); @@ -3170,8 +3024,8 @@ mmo_write_symbols_and_terminator (abfd) isn't debugged and abort if we get here. Instead emit a diagnostic and fail "normally". */ (*_bfd_error_handler) - (_("%s: internal error, symbol table changed size from %d to %d\ - words\n"), + (_("%s: internal error, symbol table changed size from %d to %d" + " words\n"), bfd_get_filename (abfd), trie_len, (abfd->tdata.mmo_data->byte_no + 3)/4); bfd_set_error (bfd_error_bad_value); @@ -3200,10 +3054,7 @@ mmo_write_symbols_and_terminator (abfd) used through bfd_map_over_sections. */ static void -mmo_write_section_unless_reg_contents (abfd, sec, p) - bfd *abfd; - asection *sec; - PTR p; +mmo_write_section_unless_reg_contents (bfd *abfd, asection *sec, void *p) { struct mmo_write_sec_info *infop = (struct mmo_write_sec_info *) p; @@ -3225,8 +3076,8 @@ mmo_write_section_unless_reg_contents (abfd, sec, p) make it carry contents, so we don't have a test-case for this. */ (*_bfd_error_handler) - (_("%s: internal error, internal register section %s had\ - contents\n"), + (_("%s: internal error, internal register section %s had" + " contents\n"), bfd_get_filename (abfd), sec->name); bfd_set_error (bfd_error_bad_value); infop->retval = FALSE; @@ -3243,8 +3094,7 @@ mmo_write_section_unless_reg_contents (abfd, sec, p) already called. */ static bfd_boolean -mmo_write_object_contents (abfd) - bfd *abfd; +mmo_write_object_contents (bfd *abfd) { struct mmo_write_sec_info wsecinfo; @@ -3256,7 +3106,7 @@ mmo_write_object_contents (abfd) wsecinfo.retval = TRUE; bfd_map_over_sections (abfd, mmo_write_section_unless_reg_contents, - (PTR) &wsecinfo); + &wsecinfo); if (! wsecinfo.retval) return FALSE; @@ -3288,8 +3138,8 @@ mmo_write_object_contents (abfd) (long) sec->size); else (*_bfd_error_handler) - (_("%s: invalid start address for initialized registers of\ - length %ld: 0x%lx%08lx\n"), + (_("%s: invalid start address for initialized registers of" + " length %ld: 0x%lx%08lx\n"), bfd_get_filename (abfd), (long) sec->size, (unsigned long) (sec->vma >> 32), (unsigned long) (sec->vma)); @@ -3311,22 +3161,19 @@ mmo_write_object_contents (abfd) object. */ static long -mmo_get_reloc_upper_bound (abfd, sec) - bfd *abfd ATTRIBUTE_UNUSED; - asection *sec ATTRIBUTE_UNUSED; +mmo_get_reloc_upper_bound (bfd *abfd ATTRIBUTE_UNUSED, + asection *sec ATTRIBUTE_UNUSED) { - return sizeof (PTR); + return sizeof (void *); } /* Similarly canonicalize relocs to empty, filling in the terminating NULL pointer. */ long -mmo_canonicalize_reloc (abfd, section, relptr, symbols) - bfd *abfd ATTRIBUTE_UNUSED; - sec_ptr section ATTRIBUTE_UNUSED; - arelent **relptr; - asymbol **symbols ATTRIBUTE_UNUSED; +mmo_canonicalize_reloc (bfd *abfd ATTRIBUTE_UNUSED, + sec_ptr section ATTRIBUTE_UNUSED, arelent **relptr, + asymbol **symbols ATTRIBUTE_UNUSED) { *relptr = NULL; return 0; |