diff options
author | Alan Modra <amodra@gmail.com> | 2001-09-18 09:57:26 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2001-09-18 09:57:26 +0000 |
commit | dc810e3900d47ab2eea86d50231ff2e70b596847 (patch) | |
tree | 13fc3d267fb99c450380f08a0775b2dff076b8d7 /bfd/coffcode.h | |
parent | 417412a27c87b0e738a21122a38d48aa35317eb8 (diff) | |
download | gdb-dc810e3900d47ab2eea86d50231ff2e70b596847.zip gdb-dc810e3900d47ab2eea86d50231ff2e70b596847.tar.gz gdb-dc810e3900d47ab2eea86d50231ff2e70b596847.tar.bz2 |
Touches most files in bfd/, so likely will be blamed for everything..
o bfd_read and bfd_write lose an unnecessary param and become
bfd_bread and bfd_bwrite.
o bfd_*alloc now all take a bfd_size_type arg, and will error if
size_t is too small. eg. 32 bit host, 64 bit bfd, verrry big files
or bugs in linker scripts etc.
o file_ptr becomes a bfd_signed_vma. Besides matching sizes with
various other types involved in handling sections, this should make
it easier for bfd to support a 64 bit off_t on 32 bit hosts that
provide it.
o I've made the H_GET_* and H_PUT_* macros (which invoke bfd_h_{get,put}_*)
generally available. They now cast their args to bfd_vma and
bfd_byte * as appropriate, which removes a swag of casts from the
source.
o Bug fixes to bfd_get8, aix386_core_vec, elf32_h8_relax_section, and
aout-encap.c.
o Zillions of formatting and -Wconversion fixes.
Diffstat (limited to 'bfd/coffcode.h')
-rw-r--r-- | bfd/coffcode.h | 697 |
1 files changed, 318 insertions, 379 deletions
diff --git a/bfd/coffcode.h b/bfd/coffcode.h index 3683fac..fc47d57 100644 --- a/bfd/coffcode.h +++ b/bfd/coffcode.h @@ -248,39 +248,37 @@ CODE_FRAGMENT . .typedef struct coff_ptr_struct .{ +. {* Remembers the offset from the first symbol in the file for +. this symbol. Generated by coff_renumber_symbols. *} +. unsigned int offset; . -. {* Remembers the offset from the first symbol in the file for -. this symbol. Generated by coff_renumber_symbols. *} -.unsigned int offset; +. {* Should the value of this symbol be renumbered. Used for +. XCOFF C_BSTAT symbols. Set by coff_slurp_symbol_table. *} +. unsigned int fix_value : 1; . -. {* Should the value of this symbol be renumbered. Used for -. XCOFF C_BSTAT symbols. Set by coff_slurp_symbol_table. *} -.unsigned int fix_value : 1; +. {* Should the tag field of this symbol be renumbered. +. Created by coff_pointerize_aux. *} +. unsigned int fix_tag : 1; . -. {* Should the tag field of this symbol be renumbered. -. Created by coff_pointerize_aux. *} -.unsigned int fix_tag : 1; +. {* Should the endidx field of this symbol be renumbered. +. Created by coff_pointerize_aux. *} +. unsigned int fix_end : 1; . -. {* Should the endidx field of this symbol be renumbered. -. Created by coff_pointerize_aux. *} -.unsigned int fix_end : 1; +. {* Should the x_csect.x_scnlen field be renumbered. +. Created by coff_pointerize_aux. *} +. unsigned int fix_scnlen : 1; . -. {* Should the x_csect.x_scnlen field be renumbered. -. Created by coff_pointerize_aux. *} -.unsigned int fix_scnlen : 1; +. {* Fix up an XCOFF C_BINCL/C_EINCL symbol. The value is the +. index into the line number entries. Set by coff_slurp_symbol_table. *} +. unsigned int fix_line : 1; . -. {* Fix up an XCOFF C_BINCL/C_EINCL symbol. The value is the -. index into the line number entries. Set by -. coff_slurp_symbol_table. *} -.unsigned int fix_line : 1; -. -. {* The container for the symbol structure as read and translated -. from the file. *} -. -.union { -. union internal_auxent auxent; -. struct internal_syment syment; -. } u; +. {* The container for the symbol structure as read and translated +. from the file. *} +. union +. { +. union internal_auxent auxent; +. struct internal_syment syment; +. } u; .} combined_entry_type; . . @@ -288,17 +286,17 @@ CODE_FRAGMENT . .typedef struct coff_symbol_struct .{ -. {* The actual symbol which the rest of BFD works with *} -.asymbol symbol; +. {* The actual symbol which the rest of BFD works with *} +. asymbol symbol; . -. {* A pointer to the hidden information for this symbol *} -.combined_entry_type *native; +. {* A pointer to the hidden information for this symbol *} +. combined_entry_type *native; . -. {* A pointer to the linenumber information for this symbol *} -.struct lineno_cache_entry *lineno; +. {* A pointer to the linenumber information for this symbol *} +. struct lineno_cache_entry *lineno; . -. {* Have the line numbers been relocated yet ? *} -.boolean done_lineno; +. {* Have the line numbers been relocated yet ? *} +. boolean done_lineno; .} coff_symbol_type; */ @@ -324,12 +322,12 @@ static boolean coff_write_relocs PARAMS ((bfd *, int)); static boolean coff_set_flags PARAMS ((bfd *, unsigned int *, unsigned short *)); static boolean coff_set_arch_mach - PARAMS ((bfd *, enum bfd_architecture, unsigned long)); + PARAMS ((bfd *, enum bfd_architecture, unsigned long)) ATTRIBUTE_UNUSED; static boolean coff_compute_section_file_positions PARAMS ((bfd *)); static boolean coff_write_object_contents PARAMS ((bfd *)) ATTRIBUTE_UNUSED; static boolean coff_set_section_contents PARAMS ((bfd *, asection *, PTR, file_ptr, bfd_size_type)); -static PTR buy_and_read PARAMS ((bfd *, file_ptr, int, size_t)); +static PTR buy_and_read PARAMS ((bfd *, file_ptr, bfd_size_type)); static boolean coff_slurp_line_table PARAMS ((bfd *, asection *)); static boolean coff_slurp_symbol_table PARAMS ((bfd *)); static enum coff_symbol_classification coff_classify_symbol @@ -368,7 +366,7 @@ static flagword handle_COMDAT PARAMS ((bfd *, flagword, PTR, const char *, asect static long sec_to_styp_flags (sec_name, sec_flags) - CONST char *sec_name; + const char *sec_name; flagword sec_flags; { long styp_flags = 0; @@ -508,7 +506,7 @@ sec_to_styp_flags (sec_name, sec_flags) if ((sec_flags & SEC_ALLOC) != 0 && (sec_flags & SEC_LOAD) == 0) styp_flags |= IMAGE_SCN_CNT_UNINITIALIZED_DATA; /* ==STYP_BSS */ /* skip ROM */ - /* skip CONSTRUCTOR */ + /* skip constRUCTOR */ /* skip CONTENTS */ #ifdef STYP_NOLOAD if ((sec_flags & (SEC_NEVER_LOAD | SEC_COFF_SHARED_LIBRARY)) != 0) @@ -730,7 +728,7 @@ handle_COMDAT (abfd, sec_flags, hdr, name, section) if (! _bfd_coff_get_external_symbols (abfd)) return sec_flags; - + esymstart = esym = (bfd_byte *) obj_coff_external_syms (abfd); esymend = esym + obj_raw_syment_count (abfd) * bfd_coff_symesz (abfd); @@ -917,21 +915,23 @@ handle_COMDAT (abfd, sec_flags, hdr, name, section) drop through from the above). */ { char *newname; + bfd_size_type amt; /* This must the the second symbol with the section #. It is the actual symbol name. Intel puts the two adjacent, but Alpha (at least) spreads them out. */ - section->comdat = - bfd_alloc (abfd, sizeof (struct bfd_comdat_info)); + amt = sizeof (struct bfd_comdat_info); + section->comdat = bfd_alloc (abfd, amt); if (section->comdat == NULL) abort (); section->comdat->symbol = (esym - esymstart) / bfd_coff_symesz (abfd); - newname = bfd_alloc (abfd, strlen (symname) + 1); + amt = strlen (symname) + 1; + newname = bfd_alloc (abfd, amt); if (newname == NULL) abort (); @@ -981,7 +981,7 @@ styp_to_sec_flags (abfd, hdr, name, section, flags_ptr) { long flag = styp_flags & - styp_flags; char * unhandled = NULL; - + styp_flags &= ~ flag; /* We infer from the distinct read/write/execute bits the settings @@ -1006,7 +1006,7 @@ styp_to_sec_flags (abfd, hdr, name, section, flags_ptr) case STYP_NOLOAD: sec_flags |= SEC_NEVER_LOAD; break; -#endif +#endif case IMAGE_SCN_MEM_READ: /* Ignored, assume it always to be true. */ break; @@ -1063,7 +1063,7 @@ styp_to_sec_flags (abfd, hdr, name, section, flags_ptr) break; default: /* Silently ignore for now. */ - break; + break; } /* If the section flag was not handled, report it here. */ @@ -1089,7 +1089,7 @@ styp_to_sec_flags (abfd, hdr, name, section, flags_ptr) if (flags_ptr) * flags_ptr = sec_flags; - + return result; } @@ -1122,235 +1122,166 @@ CODE_FRAGMENT Special entry points for gdb to swap in coff symbol table parts: .typedef struct .{ -. void (*_bfd_coff_swap_aux_in) PARAMS (( -. bfd *abfd, -. PTR ext, -. int type, -. int class, -. int indaux, -. int numaux, -. PTR in)); +. void (*_bfd_coff_swap_aux_in) +. PARAMS ((bfd *, PTR, int, int, int, int, PTR)); . -. void (*_bfd_coff_swap_sym_in) PARAMS (( -. bfd *abfd , -. PTR ext, -. PTR in)); +. void (*_bfd_coff_swap_sym_in) +. PARAMS ((bfd *, PTR, PTR)); . -. void (*_bfd_coff_swap_lineno_in) PARAMS (( -. bfd *abfd, -. PTR ext, -. PTR in)); +. void (*_bfd_coff_swap_lineno_in) +. PARAMS ((bfd *, PTR, PTR)); . - -Special entry points for gas to swap out coff parts: - -. unsigned int (*_bfd_coff_swap_aux_out) PARAMS (( -. bfd *abfd, -. PTR in, -. int type, -. int class, -. int indaux, -. int numaux, -. PTR ext)); +. unsigned int (*_bfd_coff_swap_aux_out) +. PARAMS ((bfd *, PTR, int, int, int, int, PTR)); . -. unsigned int (*_bfd_coff_swap_sym_out) PARAMS (( -. bfd *abfd, -. PTR in, -. PTR ext)); +. unsigned int (*_bfd_coff_swap_sym_out) +. PARAMS ((bfd *, PTR, PTR)); . -. unsigned int (*_bfd_coff_swap_lineno_out) PARAMS (( -. bfd *abfd, -. PTR in, -. PTR ext)); +. unsigned int (*_bfd_coff_swap_lineno_out) +. PARAMS ((bfd *, PTR, PTR)); . -. unsigned int (*_bfd_coff_swap_reloc_out) PARAMS (( -. bfd *abfd, -. PTR src, -. PTR dst)); +. unsigned int (*_bfd_coff_swap_reloc_out) +. PARAMS ((bfd *, PTR, PTR)); . -. unsigned int (*_bfd_coff_swap_filehdr_out) PARAMS (( -. bfd *abfd, -. PTR in, -. PTR out)); +. unsigned int (*_bfd_coff_swap_filehdr_out) +. PARAMS ((bfd *, PTR, PTR)); . -. unsigned int (*_bfd_coff_swap_aouthdr_out) PARAMS (( -. bfd *abfd, -. PTR in, -. PTR out)); +. unsigned int (*_bfd_coff_swap_aouthdr_out) +. PARAMS ((bfd *, PTR, PTR)); . -. unsigned int (*_bfd_coff_swap_scnhdr_out) PARAMS (( -. bfd *abfd, -. PTR in, -. PTR out)); +. unsigned int (*_bfd_coff_swap_scnhdr_out) +. PARAMS ((bfd *, PTR, PTR)); . - -Special entry points for generic COFF routines to call target -dependent COFF routines: - -. unsigned int _bfd_filhsz; -. unsigned int _bfd_aoutsz; -. unsigned int _bfd_scnhsz; -. unsigned int _bfd_symesz; -. unsigned int _bfd_auxesz; -. unsigned int _bfd_relsz; -. unsigned int _bfd_linesz; -. unsigned int _bfd_filnmlen; -. boolean _bfd_coff_long_filenames; -. boolean _bfd_coff_long_section_names; -. unsigned int _bfd_coff_default_section_alignment_power; -. boolean _bfd_coff_force_symnames_in_strings; -. unsigned int _bfd_coff_debug_string_prefix_length; -. void (*_bfd_coff_swap_filehdr_in) PARAMS (( -. bfd *abfd, -. PTR ext, -. PTR in)); -. void (*_bfd_coff_swap_aouthdr_in) PARAMS (( -. bfd *abfd, -. PTR ext, -. PTR in)); -. void (*_bfd_coff_swap_scnhdr_in) PARAMS (( -. bfd *abfd, -. PTR ext, -. PTR in)); -. void (*_bfd_coff_swap_reloc_in) PARAMS (( -. bfd *abfd, -. PTR ext, -. PTR in)); -. boolean (*_bfd_coff_bad_format_hook) PARAMS (( -. bfd *abfd, -. PTR internal_filehdr)); -. boolean (*_bfd_coff_set_arch_mach_hook) PARAMS (( -. bfd *abfd, -. PTR internal_filehdr)); -. PTR (*_bfd_coff_mkobject_hook) PARAMS (( -. bfd *abfd, -. PTR internal_filehdr, -. PTR internal_aouthdr)); -. boolean (*_bfd_styp_to_sec_flags_hook) PARAMS (( -. bfd *abfd, -. PTR internal_scnhdr, -. const char *name, -. asection *section, -. flagword *flags_ptr)); -. void (*_bfd_set_alignment_hook) PARAMS (( -. bfd *abfd, -. asection *sec, -. PTR internal_scnhdr)); -. boolean (*_bfd_coff_slurp_symbol_table) PARAMS (( -. bfd *abfd)); -. boolean (*_bfd_coff_symname_in_debug) PARAMS (( -. bfd *abfd, -. struct internal_syment *sym)); -. boolean (*_bfd_coff_pointerize_aux_hook) PARAMS (( -. bfd *abfd, -. combined_entry_type *table_base, -. combined_entry_type *symbol, -. unsigned int indaux, -. combined_entry_type *aux)); -. boolean (*_bfd_coff_print_aux) PARAMS (( -. bfd *abfd, -. FILE *file, -. combined_entry_type *table_base, -. combined_entry_type *symbol, -. combined_entry_type *aux, -. unsigned int indaux)); -. void (*_bfd_coff_reloc16_extra_cases) PARAMS (( -. bfd *abfd, -. struct bfd_link_info *link_info, -. struct bfd_link_order *link_order, -. arelent *reloc, -. bfd_byte *data, -. unsigned int *src_ptr, -. unsigned int *dst_ptr)); -. int (*_bfd_coff_reloc16_estimate) PARAMS (( -. bfd *abfd, -. asection *input_section, -. arelent *r, -. unsigned int shrink, -. struct bfd_link_info *link_info)); -. enum coff_symbol_classification (*_bfd_coff_classify_symbol) PARAMS (( -. bfd *abfd, -. struct internal_syment *)); -. boolean (*_bfd_coff_compute_section_file_positions) PARAMS (( -. bfd *abfd)); -. boolean (*_bfd_coff_start_final_link) PARAMS (( -. bfd *output_bfd, -. struct bfd_link_info *info)); -. boolean (*_bfd_coff_relocate_section) PARAMS (( -. bfd *output_bfd, -. struct bfd_link_info *info, -. bfd *input_bfd, -. asection *input_section, -. bfd_byte *contents, -. struct internal_reloc *relocs, -. struct internal_syment *syms, -. asection **sections)); -. reloc_howto_type *(*_bfd_coff_rtype_to_howto) PARAMS (( -. bfd *abfd, -. asection *sec, -. struct internal_reloc *rel, -. struct coff_link_hash_entry *h, -. struct internal_syment *sym, -. bfd_vma *addendp)); -. boolean (*_bfd_coff_adjust_symndx) PARAMS (( -. bfd *obfd, -. struct bfd_link_info *info, -. bfd *ibfd, -. asection *sec, -. struct internal_reloc *reloc, -. boolean *adjustedp)); -. boolean (*_bfd_coff_link_add_one_symbol) PARAMS (( -. struct bfd_link_info *info, -. bfd *abfd, -. const char *name, -. flagword flags, -. asection *section, -. bfd_vma value, -. const char *string, -. boolean copy, -. boolean collect, -. struct bfd_link_hash_entry **hashp)); +. unsigned int _bfd_filhsz; +. unsigned int _bfd_aoutsz; +. unsigned int _bfd_scnhsz; +. unsigned int _bfd_symesz; +. unsigned int _bfd_auxesz; +. unsigned int _bfd_relsz; +. unsigned int _bfd_linesz; +. unsigned int _bfd_filnmlen; +. boolean _bfd_coff_long_filenames; +. boolean _bfd_coff_long_section_names; +. unsigned int _bfd_coff_default_section_alignment_power; +. boolean _bfd_coff_force_symnames_in_strings; +. unsigned int _bfd_coff_debug_string_prefix_length; +. +. void (*_bfd_coff_swap_filehdr_in) +. PARAMS ((bfd *, PTR, PTR)); +. +. void (*_bfd_coff_swap_aouthdr_in) +. PARAMS ((bfd *, PTR, PTR)); +. +. void (*_bfd_coff_swap_scnhdr_in) +. PARAMS ((bfd *, PTR, PTR)); +. +. void (*_bfd_coff_swap_reloc_in) +. PARAMS ((bfd *abfd, PTR, PTR)); +. +. boolean (*_bfd_coff_bad_format_hook) +. PARAMS ((bfd *, PTR)); +. +. boolean (*_bfd_coff_set_arch_mach_hook) +. PARAMS ((bfd *, PTR)); +. +. PTR (*_bfd_coff_mkobject_hook) +. PARAMS ((bfd *, PTR, PTR)); +. +. boolean (*_bfd_styp_to_sec_flags_hook) +. PARAMS ((bfd *, PTR, const char *, asection *, flagword *)); +. +. void (*_bfd_set_alignment_hook) +. PARAMS ((bfd *, asection *, PTR)); +. +. boolean (*_bfd_coff_slurp_symbol_table) +. PARAMS ((bfd *)); +. +. boolean (*_bfd_coff_symname_in_debug) +. PARAMS ((bfd *, struct internal_syment *)); +. +. boolean (*_bfd_coff_pointerize_aux_hook) +. PARAMS ((bfd *, combined_entry_type *, combined_entry_type *, +. unsigned int, combined_entry_type *)); +. +. boolean (*_bfd_coff_print_aux) +. PARAMS ((bfd *, FILE *, combined_entry_type *, combined_entry_type *, +. combined_entry_type *, unsigned int)); +. +. void (*_bfd_coff_reloc16_extra_cases) +. PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *, +. bfd_byte *, unsigned int *, unsigned int *)); +. +. int (*_bfd_coff_reloc16_estimate) +. PARAMS ((bfd *, asection *, arelent *, unsigned int, +. struct bfd_link_info *)); +. +. enum coff_symbol_classification (*_bfd_coff_classify_symbol) +. PARAMS ((bfd *, struct internal_syment *)); +. +. boolean (*_bfd_coff_compute_section_file_positions) +. PARAMS ((bfd *)); . -. boolean (*_bfd_coff_link_output_has_begun) PARAMS (( -. bfd * abfd, -. struct coff_final_link_info * pfinfo)); -. boolean (*_bfd_coff_final_link_postscript) PARAMS (( -. bfd * abfd, -. struct coff_final_link_info * pfinfo)); +. boolean (*_bfd_coff_start_final_link) +. PARAMS ((bfd *, struct bfd_link_info *)); +. +. boolean (*_bfd_coff_relocate_section) +. PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, +. struct internal_reloc *, struct internal_syment *, asection **)); +. +. reloc_howto_type *(*_bfd_coff_rtype_to_howto) +. PARAMS ((bfd *, asection *, struct internal_reloc *, +. struct coff_link_hash_entry *, struct internal_syment *, +. bfd_vma *)); +. +. boolean (*_bfd_coff_adjust_symndx)\ +. PARAMS ((bfd *, struct bfd_link_info *, bfd *, asection *, +. struct internal_reloc *, boolean *)); +. +. boolean (*_bfd_coff_link_add_one_symbol) +. PARAMS ((struct bfd_link_info *, bfd *, const char *, flagword, +. asection *, bfd_vma, const char *, boolean, boolean, +. struct bfd_link_hash_entry **)); +. +. boolean (*_bfd_coff_link_output_has_begun) +. PARAMS ((bfd *, struct coff_final_link_info *)); +. +. boolean (*_bfd_coff_final_link_postscript) +. PARAMS ((bfd *, struct coff_final_link_info *)); . .} bfd_coff_backend_data; . -.#define coff_backend_info(abfd) ((bfd_coff_backend_data *) (abfd)->xvec->backend_data) +.#define coff_backend_info(abfd) \ +. ((bfd_coff_backend_data *) (abfd)->xvec->backend_data) . .#define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \ -. ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i)) +. ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i)) . .#define bfd_coff_swap_sym_in(a,e,i) \ -. ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i)) +. ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i)) . .#define bfd_coff_swap_lineno_in(a,e,i) \ -. ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i)) +. ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i)) . .#define bfd_coff_swap_reloc_out(abfd, i, o) \ -. ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o)) +. ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o)) . .#define bfd_coff_swap_lineno_out(abfd, i, o) \ -. ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o)) +. ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o)) . .#define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \ -. ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o)) +. ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o)) . .#define bfd_coff_swap_sym_out(abfd, i,o) \ -. ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o)) +. ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o)) . .#define bfd_coff_swap_scnhdr_out(abfd, i,o) \ -. ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o)) +. ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o)) . .#define bfd_coff_swap_filehdr_out(abfd, i,o) \ -. ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o)) +. ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o)) . .#define bfd_coff_swap_aouthdr_out(abfd, i,o) \ -. ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o)) +. ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o)) . .#define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz) .#define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz) @@ -1360,90 +1291,91 @@ dependent COFF routines: .#define bfd_coff_relsz(abfd) (coff_backend_info (abfd)->_bfd_relsz) .#define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz) .#define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen) -.#define bfd_coff_long_filenames(abfd) (coff_backend_info (abfd)->_bfd_coff_long_filenames) +.#define bfd_coff_long_filenames(abfd) \ +. (coff_backend_info (abfd)->_bfd_coff_long_filenames) .#define bfd_coff_long_section_names(abfd) \ -. (coff_backend_info (abfd)->_bfd_coff_long_section_names) +. (coff_backend_info (abfd)->_bfd_coff_long_section_names) .#define bfd_coff_default_section_alignment_power(abfd) \ -. (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power) +. (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power) .#define bfd_coff_swap_filehdr_in(abfd, i,o) \ -. ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o)) +. ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o)) . .#define bfd_coff_swap_aouthdr_in(abfd, i,o) \ -. ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o)) +. ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o)) . .#define bfd_coff_swap_scnhdr_in(abfd, i,o) \ -. ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o)) +. ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o)) . .#define bfd_coff_swap_reloc_in(abfd, i, o) \ -. ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o)) +. ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o)) . .#define bfd_coff_bad_format_hook(abfd, filehdr) \ -. ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr)) +. ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr)) . .#define bfd_coff_set_arch_mach_hook(abfd, filehdr)\ -. ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr)) +. ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr)) .#define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\ -. ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook) (abfd, filehdr, aouthdr)) +. ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook) (abfd, filehdr, aouthdr)) . .#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\ -. ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\ -. (abfd, scnhdr, name, section, flags_ptr)) +. ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\ +. (abfd, scnhdr, name, section, flags_ptr)) . .#define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\ -. ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr)) +. ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr)) . .#define bfd_coff_slurp_symbol_table(abfd)\ -. ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd)) +. ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd)) . .#define bfd_coff_symname_in_debug(abfd, sym)\ -. ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym)) +. ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym)) . .#define bfd_coff_force_symnames_in_strings(abfd)\ -. (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings) +. (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings) . .#define bfd_coff_debug_string_prefix_length(abfd)\ -. (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length) +. (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length) . .#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\ -. ((coff_backend_info (abfd)->_bfd_coff_print_aux)\ -. (abfd, file, base, symbol, aux, indaux)) +. ((coff_backend_info (abfd)->_bfd_coff_print_aux)\ +. (abfd, file, base, symbol, aux, indaux)) . .#define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)\ -. ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\ -. (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)) +. ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\ +. (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr)) . .#define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\ -. ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\ -. (abfd, section, reloc, shrink, link_info)) +. ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\ +. (abfd, section, reloc, shrink, link_info)) . .#define bfd_coff_classify_symbol(abfd, sym)\ -. ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\ -. (abfd, sym)) +. ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\ +. (abfd, sym)) . .#define bfd_coff_compute_section_file_positions(abfd)\ -. ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\ -. (abfd)) +. ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\ +. (abfd)) . .#define bfd_coff_start_final_link(obfd, info)\ -. ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\ -. (obfd, info)) +. ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\ +. (obfd, info)) .#define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\ -. ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\ -. (obfd, info, ibfd, o, con, rel, isyms, secs)) +. ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\ +. (obfd, info, ibfd, o, con, rel, isyms, secs)) .#define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\ -. ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\ -. (abfd, sec, rel, h, sym, addendp)) +. ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\ +. (abfd, sec, rel, h, sym, addendp)) .#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\ -. ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\ -. (obfd, info, ibfd, sec, rel, adjustedp)) +. ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\ +. (obfd, info, ibfd, sec, rel, adjustedp)) .#define bfd_coff_link_add_one_symbol(info,abfd,name,flags,section,value,string,cp,coll,hashp)\ -. ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\ -. (info, abfd, name, flags, section, value, string, cp, coll, hashp)) +. ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\ +. (info, abfd, name, flags, section, value, string, cp, coll, hashp)) . .#define bfd_coff_link_output_has_begun(a,p) \ -. ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a,p)) +. ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a,p)) .#define bfd_coff_final_link_postscript(a,p) \ -. ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a,p)) +. ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a,p)) . */ @@ -1545,6 +1477,7 @@ coff_new_section_hook (abfd, section) asection * section; { combined_entry_type *native; + bfd_size_type amt; section->alignment_power = COFF_DEFAULT_SECTION_ALIGNMENT_POWER; @@ -1562,8 +1495,8 @@ coff_new_section_hook (abfd, section) @@ The 10 is a guess at a plausible maximum number of aux entries (but shouldn't be a constant). */ - native = ((combined_entry_type *) - bfd_zalloc (abfd, sizeof (combined_entry_type) * 10)); + amt = sizeof (combined_entry_type) * 10; + native = (combined_entry_type *) bfd_zalloc (abfd, amt); if (native == NULL) return false; @@ -1645,6 +1578,7 @@ coff_set_alignment_hook (abfd, section, scnhdr) PTR scnhdr; { struct internal_scnhdr *hdr = (struct internal_scnhdr *) scnhdr; + bfd_size_type amt; ALIGN_SET (hdr->s_flags, IMAGE_SCN_ALIGN_64BYTES, 6) ELIFALIGN_SET (hdr->s_flags, IMAGE_SCN_ALIGN_32BYTES, 5) @@ -1660,8 +1594,8 @@ coff_set_alignment_hook (abfd, section, scnhdr) mapped onto a generic BFD section bit. */ if (coff_section_data (abfd, section) == NULL) { - section->used_by_bfd = - (PTR) bfd_zalloc (abfd, sizeof (struct coff_section_tdata)); + amt = sizeof (struct coff_section_tdata); + section->used_by_bfd = (PTR) bfd_zalloc (abfd, amt); if (section->used_by_bfd == NULL) { /* FIXME: Return error. */ @@ -1670,8 +1604,8 @@ coff_set_alignment_hook (abfd, section, scnhdr) } if (pei_section_data (abfd, section) == NULL) { - coff_section_data (abfd, section)->tdata = - (PTR) bfd_zalloc (abfd, sizeof (struct pei_section_tdata)); + amt = sizeof (struct pei_section_tdata); + coff_section_data (abfd, section)->tdata = (PTR) bfd_zalloc (abfd, amt); if (coff_section_data (abfd, section)->tdata == NULL) { /* FIXME: Return error. */ @@ -1688,16 +1622,15 @@ coff_set_alignment_hook (abfd, section, scnhdr) { struct external_reloc dst; struct internal_reloc n; - int oldpos = bfd_tell (abfd); - bfd_seek (abfd, hdr->s_relptr, 0); - if (bfd_read ((PTR) & dst, 1, bfd_coff_relsz (abfd), abfd) + file_ptr oldpos = bfd_tell (abfd); + bfd_seek (abfd, (file_ptr) hdr->s_relptr, 0); + if (bfd_bread ((PTR) &dst, (bfd_size_type) bfd_coff_relsz (abfd), abfd) != bfd_coff_relsz (abfd)) return; coff_swap_reloc_in (abfd, &dst, &n); bfd_seek (abfd, oldpos, 0); - section->reloc_count = - hdr->s_nreloc = n.r_vaddr; + section->reloc_count = hdr->s_nreloc = n.r_vaddr; } } #undef ALIGN_SET @@ -1725,7 +1658,7 @@ coff_set_alignment_hook (abfd, section, scnhdr) if ((hdr->s_flags & STYP_OVRFLO) == 0) return; - real_sec = coff_section_from_bfd_index (abfd, hdr->s_nreloc); + real_sec = coff_section_from_bfd_index (abfd, (int) hdr->s_nreloc); if (real_sec == NULL) return; @@ -1761,8 +1694,9 @@ coff_mkobject (abfd) bfd * abfd; { coff_data_type *coff; + bfd_size_type amt = sizeof (coff_data_type); - abfd->tdata.coff_obj_data = (struct coff_tdata *) bfd_zalloc (abfd, sizeof (coff_data_type)); + abfd->tdata.coff_obj_data = (struct coff_tdata *) bfd_zalloc (abfd, amt); if (abfd->tdata.coff_obj_data == 0) return false; coff = coff_data (abfd); @@ -1870,7 +1804,7 @@ coff_set_arch_mach_hook (abfd, filehdr) bfd *abfd; PTR filehdr; { - long machine; + unsigned long machine; enum bfd_architecture arch; struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr; @@ -2030,11 +1964,11 @@ coff_set_arch_mach_hook (abfd, filehdr) { bfd_byte *buf; struct internal_syment sym; + bfd_size_type amt = bfd_coff_symesz (abfd); - buf = (bfd_byte *) bfd_malloc (bfd_coff_symesz (abfd)); + buf = (bfd_byte *) bfd_malloc (amt); if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0 - || (bfd_read (buf, 1, bfd_coff_symesz (abfd), abfd) - != bfd_coff_symesz (abfd))) + || bfd_bread (buf, amt, abfd) != amt) { free (buf); return false; @@ -2325,7 +2259,7 @@ coff_print_aux (abfd, file, table_base, symbol, aux, indaux) if (SMTYP_SMTYP (aux->u.auxent.x_csect.x_smtyp) != XTY_LD) { BFD_ASSERT (! aux->fix_scnlen); -#ifdef XCOFF64 +#ifdef XCOFF64 fprintf (file, "val %5lld", aux->u.auxent.x_csect.x_scnlen.l); #else fprintf (file, "val %5ld", (long) aux->u.auxent.x_csect.x_scnlen.l); @@ -2413,12 +2347,18 @@ coff_write_relocs (abfd, first_undef) #ifndef TARG_AUX p = s->orelocation; #else - /* sort relocations before we write them out */ - p = (arelent **) bfd_malloc (s->reloc_count * sizeof (arelent *)); - if (p == NULL && s->reloc_count > 0) - return false; - memcpy (p, s->orelocation, s->reloc_count * sizeof (arelent *)); - qsort (p, s->reloc_count, sizeof (arelent *), compare_arelent_ptr); + { + /* sort relocations before we write them out */ + bfd_size_type amt; + + amt = s->reloc_count; + amt *= sizeof (arelent *); + p = (arelent **) bfd_malloc (amt); + if (p == NULL && s->reloc_count > 0) + return false; + memcpy (p, s->orelocation, (size_t) amt); + qsort (p, s->reloc_count, sizeof (arelent *), compare_arelent_ptr); + } #endif if (bfd_seek (abfd, s->rel_filepos, SEEK_SET) != 0) @@ -2433,8 +2373,8 @@ coff_write_relocs (abfd, first_undef) /* add one to count *this* reloc (grr) */ n.r_vaddr = s->reloc_count + 1; coff_swap_reloc_out (abfd, &n, &dst); - if (bfd_write ((PTR) & dst, 1, bfd_coff_relsz (abfd), abfd) - != bfd_coff_relsz (abfd)) + if (bfd_bwrite ((PTR) & dst, (bfd_size_type) bfd_coff_relsz (abfd), + abfd) != bfd_coff_relsz (abfd)) return false; } #endif @@ -2457,15 +2397,15 @@ coff_write_relocs (abfd, first_undef) if (q->sym_ptr_ptr[0]->the_bfd != abfd) { - int i; + int j; const char *sname = q->sym_ptr_ptr[0]->name; asymbol **outsyms = abfd->outsymbols; - for (i = first_undef; outsyms[i]; i++) + for (j = first_undef; outsyms[j]; j++) { - const char *intable = outsyms[i]->name; + const char *intable = outsyms[j]->name; if (strcmp (intable, sname) == 0) { /* got a hit, so repoint the reloc */ - q->sym_ptr_ptr = outsyms + i; + q->sym_ptr_ptr = outsyms + j; break; } } @@ -2512,8 +2452,8 @@ coff_write_relocs (abfd, first_undef) n.r_type = q->howto->type; #endif coff_swap_reloc_out (abfd, &n, &dst); - if (bfd_write ((PTR) & dst, 1, bfd_coff_relsz (abfd), abfd) - != bfd_coff_relsz (abfd)) + if (bfd_bwrite ((PTR) & dst, (bfd_size_type) bfd_coff_relsz (abfd), + abfd) != bfd_coff_relsz (abfd)) return false; } @@ -2989,17 +2929,19 @@ coff_compute_section_file_positions (abfd) right order in the image file itself, but we do need to get the target_index values right. */ - int count; + unsigned int count; asection **section_list; - int i; + unsigned int i; int target_index; + bfd_size_type amt; count = 0; for (current = abfd->sections; current != NULL; current = current->next) ++count; /* We allocate an extra cell to simplify the final loop. */ - section_list = bfd_malloc (sizeof (struct asection *) * (count + 1)); + amt = sizeof (struct asection *) * (count + 1); + section_list = bfd_malloc (amt); if (section_list == NULL) return false; @@ -3063,15 +3005,16 @@ coff_compute_section_file_positions (abfd) page size too, and remember both sizes. */ if (coff_section_data (abfd, current) == NULL) { - current->used_by_bfd = - (PTR) bfd_zalloc (abfd, sizeof (struct coff_section_tdata)); + bfd_size_type amt = sizeof (struct coff_section_tdata); + current->used_by_bfd = (PTR) bfd_zalloc (abfd, amt); if (current->used_by_bfd == NULL) return false; } if (pei_section_data (abfd, current) == NULL) { - coff_section_data (abfd, current)->tdata = - (PTR) bfd_zalloc (abfd, sizeof (struct pei_section_tdata)); + bfd_size_type amt = sizeof (struct pei_section_tdata); + coff_section_data (abfd, current)->tdata + = (PTR) bfd_zalloc (abfd, amt); if (coff_section_data (abfd, current)->tdata == NULL) return false; } @@ -3176,7 +3119,7 @@ coff_compute_section_file_positions (abfd) b = 0; if (bfd_seek (abfd, sofar - 1, SEEK_SET) != 0 - || bfd_write (&b, 1, 1, abfd) != 1) + || bfd_bwrite (&b, (bfd_size_type) 1, abfd) != 1) return false; } @@ -3209,11 +3152,12 @@ coff_add_missing_symbols (abfd) asymbol **sympp2; unsigned int i; int need_text = 1, need_data = 1, need_bss = 1, need_file = 1; + bfd_size_type amt; for (i = 0; i < nsyms; i++) { coff_symbol_type *csym = coff_symbol_from (abfd, sympp[i]); - CONST char *name; + const char *name; if (csym) { /* only do this if there is a coff representation of the input @@ -3245,7 +3189,9 @@ coff_add_missing_symbols (abfd) if (!need_text && !need_data && !need_bss && !need_file) return true; nsyms += need_text + need_data + need_bss + need_file; - sympp2 = (asymbol **) bfd_alloc (abfd, nsyms * sizeof (asymbol *)); + amt = nsyms; + amt *= sizeof (asymbol *); + sympp2 = (asymbol **) bfd_alloc (abfd, amt); if (!sympp2) return false; memcpy (sympp2, sympp, i * sizeof (asymbol *)); @@ -3365,12 +3311,12 @@ coff_write_object_contents (abfd) { scn_base = bfd_coff_filhsz (abfd); #ifdef RS6000COFF_C -#ifndef XCOFF64 +#ifndef XCOFF64 if (xcoff_data (abfd)->full_aouthdr) scn_base += bfd_coff_aoutsz (abfd); else scn_base += SMALL_AOUTSZ; -#endif +#endif #endif } @@ -3520,9 +3466,10 @@ coff_write_object_contents (abfd) #endif { SCNHDR buff; + bfd_size_type amt = bfd_coff_scnhsz (abfd); + if (coff_swap_scnhdr_out (abfd, §ion, &buff) == 0 - || bfd_write ((PTR) (&buff), 1, bfd_coff_scnhsz (abfd), abfd) - != bfd_coff_scnhsz (abfd)) + || bfd_bwrite ((PTR) &buff, amt, abfd) != amt) return false; } @@ -3622,7 +3569,7 @@ coff_write_object_contents (abfd) } #ifdef RS6000COFF_C -#ifndef XCOFF64 +#ifndef XCOFF64 /* XCOFF handles overflows in the reloc and line number count fields by creating a new section header to hold the correct values. */ for (current = abfd->sections; current != NULL; current = current->next) @@ -3631,6 +3578,7 @@ coff_write_object_contents (abfd) { struct internal_scnhdr scnhdr; SCNHDR buff; + bfd_size_type amt; internal_f.f_nscns++; strncpy (&(scnhdr.s_name[0]), current->name, 8); @@ -3643,9 +3591,9 @@ coff_write_object_contents (abfd) scnhdr.s_nreloc = current->target_index; scnhdr.s_nlnno = current->target_index; scnhdr.s_flags = STYP_OVRFLO; + amt = bfd_coff_scnhsz (abfd); if (coff_swap_scnhdr_out (abfd, &scnhdr, &buff) == 0 - || bfd_write ((PTR) &buff, 1, bfd_coff_scnhsz (abfd), abfd) - != bfd_coff_scnhsz (abfd)) + || bfd_bwrite ((PTR) &buff, amt, abfd) != amt) return false; } } @@ -3672,12 +3620,12 @@ coff_write_object_contents (abfd) { internal_f.f_opthdr = 0; #ifdef RS6000COFF_C -#ifndef XCOFF64 +#ifndef XCOFF64 if (xcoff_data (abfd)->full_aouthdr) internal_f.f_opthdr = bfd_coff_aoutsz (abfd); else internal_f.f_opthdr = SMALL_AOUTSZ; -#endif +#endif #endif } @@ -3891,9 +3839,9 @@ coff_write_object_contents (abfd) rounded up to the page size. */ b = 0; if (bfd_seek (abfd, - BFD_ALIGN (sym_base, COFF_PAGE_SIZE) - 1, + (file_ptr) BFD_ALIGN (sym_base, COFF_PAGE_SIZE) - 1, SEEK_SET) != 0 - || bfd_write (&b, 1, 1, abfd) != 1) + || bfd_bwrite (&b, (bfd_size_type) 1, abfd) != 1) return false; } #endif @@ -4017,14 +3965,14 @@ coff_write_object_contents (abfd) { char * buff; - bfd_size_type amount; + bfd_size_type amount = bfd_coff_filhsz (abfd); - buff = bfd_malloc (bfd_coff_filhsz (abfd)); + buff = bfd_malloc (amount); if (buff == NULL) return false; - bfd_coff_swap_filehdr_out (abfd, (PTR) & internal_f, (PTR) buff); - amount = bfd_write ((PTR) buff, 1, bfd_coff_filhsz (abfd), abfd); + bfd_coff_swap_filehdr_out (abfd, (PTR) &internal_f, (PTR) buff); + amount = bfd_bwrite ((PTR) buff, amount, abfd); free (buff); @@ -4037,14 +3985,14 @@ coff_write_object_contents (abfd) /* Note that peicode.h fills in a PEAOUTHDR, not an AOUTHDR. include/coff/pe.h sets AOUTSZ == sizeof (PEAOUTHDR)) */ char * buff; - bfd_size_type amount; + bfd_size_type amount = bfd_coff_aoutsz (abfd); - buff = bfd_malloc (bfd_coff_aoutsz (abfd)); + buff = bfd_malloc (amount); if (buff == NULL) return false; - coff_swap_aouthdr_out (abfd, (PTR) & internal_a, (PTR) buff); - amount = bfd_write ((PTR) buff, 1, bfd_coff_aoutsz (abfd), abfd); + coff_swap_aouthdr_out (abfd, (PTR) &internal_a, (PTR) buff); + amount = bfd_bwrite ((PTR) buff, amount, abfd); free (buff); @@ -4063,7 +4011,7 @@ coff_write_object_contents (abfd) size = bfd_coff_aoutsz (abfd); else size = SMALL_AOUTSZ; - if (bfd_write ((PTR) &buff, 1, size, abfd) != size) + if (bfd_bwrite ((PTR) &buff, (bfd_size_type) size, abfd) != size) return false; } #endif @@ -4130,14 +4078,13 @@ coff_set_section_contents (abfd, section, location, offset, count) if (section->filepos == 0) return true; - if (bfd_seek (abfd, (file_ptr) (section->filepos + offset), SEEK_SET) != 0) + if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0) return false; - if (count != 0) - { - return (bfd_write (location, 1, count, abfd) == count) ? true : false; - } - return true; + if (count == 0) + return true; + + return bfd_bwrite (location, count, abfd) == count; } #if 0 static boolean @@ -4167,17 +4114,16 @@ coff_close_and_cleanup (abfd) #endif static PTR -buy_and_read (abfd, where, seek_direction, size) +buy_and_read (abfd, where, size) bfd *abfd; file_ptr where; - int seek_direction; - size_t size; + bfd_size_type size; { PTR area = (PTR) bfd_alloc (abfd, size); if (!area) return (NULL); - if (bfd_seek (abfd, where, seek_direction) != 0 - || bfd_read (area, 1, size, abfd) != size) + if (bfd_seek (abfd, where, SEEK_SET) != 0 + || bfd_bread (area, size, abfd) != size) return (NULL); return (area); } /* buy_and_read() */ @@ -4213,16 +4159,14 @@ coff_slurp_line_table (abfd, asect) { LINENO *native_lineno; alent *lineno_cache; + bfd_size_type amt; BFD_ASSERT (asect->lineno == (alent *) NULL); - native_lineno = (LINENO *) buy_and_read (abfd, - asect->line_filepos, - SEEK_SET, - (size_t) (bfd_coff_linesz (abfd) * - asect->lineno_count)); - lineno_cache = - (alent *) bfd_alloc (abfd, (size_t) ((asect->lineno_count + 1) * sizeof (alent))); + amt = (bfd_size_type) bfd_coff_linesz (abfd) * asect->lineno_count; + native_lineno = (LINENO *) buy_and_read (abfd, asect->line_filepos, amt); + amt = ((bfd_size_type) asect->lineno_count + 1) * sizeof (alent); + lineno_cache = (alent *) bfd_alloc (abfd, amt); if (lineno_cache == NULL) return false; else @@ -4298,6 +4242,7 @@ coff_slurp_symbol_table (abfd) combined_entry_type *native_symbols; coff_symbol_type *cached_area; unsigned int *table_ptr; + bfd_size_type amt; unsigned int number_of_symbols = 0; @@ -4311,17 +4256,15 @@ coff_slurp_symbol_table (abfd) } /* on error */ /* Allocate enough room for all the symbols in cached form */ - cached_area = ((coff_symbol_type *) - bfd_alloc (abfd, - (obj_raw_syment_count (abfd) - * sizeof (coff_symbol_type)))); - + amt = obj_raw_syment_count (abfd); + amt *= sizeof (coff_symbol_type); + cached_area = (coff_symbol_type *) bfd_alloc (abfd, amt); if (cached_area == NULL) return false; - table_ptr = ((unsigned int *) - bfd_alloc (abfd, - (obj_raw_syment_count (abfd) - * sizeof (unsigned int)))); + + amt = obj_raw_syment_count (abfd); + amt *= sizeof (unsigned int); + table_ptr = (unsigned int *) bfd_alloc (abfd, amt); if (table_ptr == NULL) return false; @@ -4819,8 +4762,8 @@ coff_slurp_reloc_table (abfd, asect, symbols) RELOC *native_relocs; arelent *reloc_cache; arelent *cache_ptr; - unsigned int idx; + bfd_size_type amt; if (asect->relocation) return true; @@ -4830,14 +4773,10 @@ coff_slurp_reloc_table (abfd, asect, symbols) return true; if (!coff_slurp_symbol_table (abfd)) return false; - native_relocs = - (RELOC *) buy_and_read (abfd, - asect->rel_filepos, - SEEK_SET, - (size_t) (bfd_coff_relsz (abfd) * - asect->reloc_count)); - reloc_cache = (arelent *) - bfd_alloc (abfd, (size_t) (asect->reloc_count * sizeof (arelent))); + amt = (bfd_size_type) bfd_coff_relsz (abfd) * asect->reloc_count; + native_relocs = (RELOC *) buy_and_read (abfd, asect->rel_filepos, amt); + amt = (bfd_size_type) asect->reloc_count * sizeof (arelent); + reloc_cache = (arelent *) bfd_alloc (abfd, amt); if (reloc_cache == NULL) return false; |