public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* Re: bfd_read and bfd_write
@ 2001-09-18  3:32 Alan Modra
  0 siblings, 0 replies; 17+ messages in thread
From: Alan Modra @ 2001-09-18  3:32 UTC (permalink / raw)
  To: binutils

First try at posting this foiled by the 400k limit.
Heh.  Anyone who wants the diff mailed to them, let me know.  Probably
easier for most of the people interested in it to "cp -la src_tree save;
cvs update; diff" themseleves, or simply use cvs diff.

On Thu, Sep 06, 2001 at 06:32:13PM +0100, Nick Clifton wrote:
> 
> I like the idea of adding the new interface, with new function names,
> and a warning message being generated if the old interface is used, as
> part of the current CVS sources/forthcoming release.  Then in the
> release after that, we can remove the old interface.

OK, that's what I've done.  Compiling anything that calls bfd_read gets
a runtime nag warning, and the shared lib version has been bumped.

So, here we go, an enormous cleanup patch that no one in their right mind
would start working on.  Apologies for its size, and for not splitting
out the bugfixes in the following.  I expect nobody will review it in
its entirety, but the changelog below should alert anyone interested in
seeing what has changed on their turf.

For those who don't want to even look at the ChangeLog, here's a quick
summary of changes beyond just killing -Wconversion warnings or
formatting fixes:

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.

Caveats: Some of the core file handling code, and som.c, can only be
compiled natively.  I'll be pleasantly surprised if I haven't temporarily
broken something.  Feel free to throw (virtual) bricks.

One last thing: I fixed copyright dates after this diff, so those changes
don't appear here.  You'll also see that the diff is done with -w, which
trims its size by about 500k.

-- 
Alan Modra

bfd/ChangeLog
	* libbfd.c (bfd_bread): New function replacing bfd_read without
	redundant params.  Allow reads up to (size_t) -2 in length.
	(bfd_bwrite): Similarly for bfd_write.
	(real_read): Return a size_t.
	(bfd_read): Call bfd_bread.
	(bfd_write): Call bfd_bwrite.
	(warn_deprecated): New function to annoy everybody.
	(bfd_get_file_window): Don't call bfd_set_error unnecessarily.
	* bfd-in.h (bfd_bread, bfd_bwrite, warn_deprecated): Declare.
	(bfd_read, bfd_write): Define as macro.
	* aix386-core.c: Replace calls to bfd_read with bfd_bread, and
	likewise for bfd_write.  Ensure function args are correct size by
	using casts or local vars.  In some cases, remove unnecessary
	casts.  Formatting fixes, in some cases removing a large expression
	from function args by using a local var.  Replace CONST with const.
	Modify variable types to avoid warings.  Use casts to avoid
	warnings when using negative numbers in unsigned expressions.
	* aout-adobe.c: Likewise.
	* aout-arm.c: Likewise.
	* aout-cris.c: Likewise.
	* aout-encap.c: Likewise.
	* aout-ns32k.c: Likewise.
	* aout-target.h: Likewise.
	* aout-tic30.c: Likewise.
	* aoutf1.h: Likewise.
	* aoutx.h: Likewise.
	* archive.c: Likewise.
	* archures.c: Likewise.
	* bfd-in.h: Likewise.
	* bfd.c: Likewise.
	* binary.c: Likewise.
	* bout.c: Likewise.
	* cache.c: Likewise.
	* cisco-core.c: Likewise.
	* coff-a29k.c: Likewise.
	* coff-alpha.c: Likewise.
	* coff-arm.c: Likewise.
	* coff-h8300.c: Likewise.
	* coff-h8500.c: Likewise.
	* coff-i386.c: Likewise.
	* coff-i860.c: Likewise.
	* coff-i960.c: Likewise.
	* coff-ia64.c: Likewise.
	* coff-m68k.c: Likewise.
	* coff-m88k.c: Likewise.
	* coff-mcore.c: Likewise.
	* coff-mips.c: Likewise.
	* coff-ppc.c: Likewise.
	* coff-rs6000.c: Likewise.
	* coff-sh.c: Likewise.
	* coff-sparc.c: Likewise.
	* coff-stgo32.c: Likewise.
	* coff-tic30.c: Likewise.
	* coff-tic54x.c: Likewise.
	* coff-tic80.c: Likewise.
	* coff-w65.c: Likewise.
	* coff-z8k.c: Likewise.
	* coff64-rs6000.c: Likewise.
	* coffcode.h: Likewise.
	* coffgen.c: Likewise.
	* cofflink.c: Likewise.
	* coffswap.h: Likewise.
	* corefile.c: Likewise.
	* cpu-arc.c: Likewise.
	* cpu-h8300.c: Likewise.
	* cpu-h8500.c: Likewise.
	* cpu-i960.c: Likewise.
	* cpu-ia64-opc.c: Likewise.
	* cpu-ns32k.c: Likewise.
	* cpu-pdp11.c: Likewise.
	* cpu-pj.c: Likewise.
	* cpu-sh.c: Likewise.
	* cpu-w65.c: Likewise.
	* cpu-z8k.c: Likewise.
	* dwarf1.c: Likewise.
	* dwarf2.c: Likewise.
	* ecoff.c: Likewise.
	* ecofflink.c: Likewise.
	* ecoffswap.h: Likewise.
	* elf-bfd.h: Likewise.
	* elf-hppa.h: Likewise.
	* elf-m10200.c: Likewise.
	* elf-m10300.c: Likewise.
	* elf.c: Likewise.
	* elf32-arc.c: Likewise.
	* elf32-arm.h: Likewise.
	* elf32-avr.c: Likewise.
	* elf32-cris.c: Likewise.
	* elf32-fr30.c: Likewise.
	* elf32-gen.c: Likewise.
	* elf32-h8300.c: Likewise.
	* elf32-hppa.c: Likewise.
	* elf32-i370.c: Likewise.
	* elf32-i386.c: Likewise.
	* elf32-i860.c: Likewise.
	* elf32-m32r.c: Likewise.
	* elf32-m68k.c: Likewise.
	* elf32-mcore.c: Likewise.
	* elf32-mips.c: Likewise.
	* elf32-openrisc.c: Likewise.
	* elf32-pj.c: Likewise.
	* elf32-ppc.c: Likewise.
	* elf32-s390.c: Likewise.
	* elf32-sh-lin.c: Likewise.
	* elf32-sh.c: Likewise.
	* elf32-sparc.c: Likewise.
	* elf32-v850.c: Likewise.
	* elf64-alpha.c: Likewise.
	* elf64-hppa.c: Likewise.
	* elf64-mips.c: Likewise.
	* elf64-ppc.c: Likewise.
	* elf64-s390.c: Likewise.
	* elf64-sparc.c: Likewise.
	* elf64-x86-64.c: Likewise.
	* elfarm-nabi.c: Likewise.
	* elfcode.h: Likewise.
	* elfcore.h: Likewise.
	* elflink.c: Likewise.
	* elflink.h: Likewise.
	* elfxx-ia64.c: Likewise.
	* elfxx-target.h: Likewise.
	* format.c: Likewise.
	* hash.c: Likewise.
	* hp300hpux.c: Likewise.
	* hppabsd-core.c: Likewise.
	* hpux-core.c: Likewise.
	* i386aout.c: Likewise.
	* i386dynix.c: Likewise.
	* i386linux.c: Likewise.
	* i386lynx.c: Likewise.
	* i386mach3.c: Likewise.
	* i386msdos.c: Likewise.
	* i386os9k.c: Likewise.
	* ieee.c: Likewise.
	* ihex.c: Likewise.
	* irix-core.c: Likewise.
	* libaout.h: Likewise.
	* libbfd-in.h: Likewise.
	* libbfd.c: Likewise.
	* libcoff-in.h: Likewise.
	* libecoff.h: Likewise.
	* libieee.h: Likewise.
	* libnlm.h: Likewise.
	* libpei.h: Likewise.
	* libxcoff.h: Likewise.
	* linker.c: Likewise.
	* lynx-core.c: Likewise.
	* m68klinux.c: Likewise.
	* merge.c: Likewise.
	* mipsbsd.c: Likewise.
	* netbsd-core.c: Likewise.
	* nlm.c: Likewise.
	* nlm32-alpha.c: Likewise.
	* nlm32-i386.c: Likewise.
	* nlm32-ppc.c: Likewise.
	* nlm32-sparc.c: Likewise.
	* nlmcode.h: Likewise.
	* nlmswap.h: Likewise.
	* ns32k.h: Likewise.
	* oasys.c: Likewise.
	* opncls.c: Likewise.
	* osf-core.c: Likewise.
	* pc532-mach.c: Likewise.
	* pdp11.c: Likewise.
	* pe-mips.c: Likewise.
	* peXXigen.c: Likewise.
	* peicode.h: Likewise.
	* ppcboot.c: Likewise.
	* ptrace-core.c: Likewise.
	* reloc.c: Likewise.
	* reloc16.c: Likewise.
	* riscix.c: Likewise.
	* rs6000-core.c: Likewise.
	* sco5-core.c: Likewise.
	* section.c: Likewise.
	* som.c: Likewise.
	* sparclinux.c: Likewise.
	* sparclynx.c: Likewise.
	* srec.c: Likewise.
	* stabs.c: Likewise.
	* sunos.c: Likewise.
	* syms.c: Likewise.
	* targets.c: Likewise.
	* tekhex.c: Likewise.
	* trad-core.c: Likewise.
	* versados.c: Likewise.
	* vms-gsd.c: Likewise.
	* vms-hdr.c: Likewise.
	* vms-misc.c: Likewise.
	* vms-tir.c: Likewise.
	* vms.c: Likewise.
	* vms.h: Likewise.
	* xcofflink.c: Likewise.
	* bfd-in2.h: Regenerate.
	* libbfd.h: Regenerate.
	* libcoff.h: Regenerate.

	* bfd.c (struct _bfd): Make "where" and "origin" unsigned.
	* bfd-in.h (file_ptr): Change from a long int to a bfd_signed_vma.
	(ufile_ptr): Define.
	(bfd_tell): Return a ufile_ptr.
	* libbfd.c (bfd_tell): Likewise.
	(bfd_seek): Use bfd_size_type locals.  Don't call bfd_set_error
	unnecessarily.
	* aix386-core.c: Test != 0 for bfd_seek errors rather than < 0.
	* aoutf1.h: Likewise.
	* som.c: Likewise.
	* cache.c (bfd_cache_lookup_worker): Guard against abfd->where
	larger than unsigned long can represent.

	* libbfd.c (bfd_malloc): Take a bfd_size_type arg.  Error if
	size overflows size_t.
	(bfd_realloc): Likewise.
	(bfd_zmalloc): Likewise.
	* opncls.c (bfd_alloc): Likewise.
	(bfd_zalloc): Likewise.
	* libbfd-in.h (bfd_malloc, bfd_realloc, bfd_zmalloc): Update.
	(bfd_alloc, bfd_zalloc): Update.

	* libbfd.c (bfd_get_8): Mask with 0xff in case char is more than
	8 bits.
	(bfd_get_signed_8): Likewise.
	(H_PUT_64, H_PUT_32, H_PUT_16, H_PUT_8,
	H_PUT_S64, H_PUT_S32, H_PUT_S16, H_PUT_S8,
	H_GET_64, H_GET_32, H_GET_16, H_GET_8,
	H_GET_S64, H_GET_S32, H_GET_S16, H_GET_S8): Define and use.
	* libaout.h: Likewise define and use here.
	* aout-adobe.c: Use H_GET_* and H_PUT_* macros.
	* aout-arm.c: Likewise.
	* aout-encap.c: Likewise.
	* aout-ns32k.c: Likewise.
	* aout-tic30.c: Likewise.
	* aoutf1.h: Likewise.
	* aoutx.h: Likewise.
	* bout.c: Likewise.
	* coff-alpha.c: Likewise.
	* coff-h8300.c: Likewise.
	* coff-h8500.c: Likewise.
	* coff-i960.c: Likewise.
	* coff-ia64.c: Likewise.
	* coff-m88k.c: Likewise.
	* coff-mips.c: Likewise.
	* coff-ppc.c: Likewise.
	* coff-rs6000.c: Likewise.
	* coff-sh.c: Likewise.
	* coff-sparc.c: Likewise.
	* coff-stgo32.c: Likewise.
	* coff-tic30.c: Likewise.
	* coff-tic80.c: Likewise.
	* coff-w65.c: Likewise.
	* coff-z8k.c: Likewise.
	* coff64-rs6000.c: Likewise.
	* coffgen.c: Likewise.
	* cofflink.c: Likewise.
	* coffswap.h: Likewise.
	* ecoff.c: Likewise.
	* ecoffswap.h: Likewise.
	* elf.c: Likewise.
	* elf32-mips.c: Likewise.
	* elf64-mips.c: Likewise.
	* hp300hpux.c: Likewise.
	* i386dynix.c: Likewise.
	* i386lynx.c: Likewise.
	* i386msdos.c: Likewise.
	* i386os9k.c: Likewise.
	* libpei.h: Likewise.
	* nlm32-alpha.c: Likewise.
	* nlm32-i386.c: Likewise.
	* nlm32-ppc.c: Likewise.
	* nlmcode.h: Likewise.
	* nlmswap.h: Likewise.
	* oasys.c: Likewise.
	* pdp11.c: Likewise.
	* pe-mips.c: Likewise.
	* peXXigen.c: Likewise.
	* peicode.h: Likewise.
	* riscix.c: Likewise.
	* sunos.c: Likewise.
	* xcofflink.c: Likewise.
	* elfcode.h: (put_word, get_word, put_signed_word, get_signed_word):
	Rename to H_PUT_WORD, H_GET_WORD, H_PUT_SIGNED_WORD, H_GET_SIGNED_WORD.
	* coff-rs6000.c (PUTWORD, PUTHALF, PUTBYTE): Don't define. Use
	equivalent H_PUT_* macro instead.
	(GETWORD, GETHALF, GETBYTE): Similarly.
	* coff64-rs6000.c (PUTWORD, PUTHALF, PUTBYTE): Likewise.
	(GETWORD, GETHALF, GETBYTE): Likewise.
	* coffswap.h (PUTWORD, PUTHALF, PUTBYTE): Likewise.

	* bfd-in.h (struct orl): Change "pos" to a union.
	* archive.c (_bfd_compute_and_write_armap): Use it instead of casts.
	(bsd_write_armap): Here too.
	(coff_write_armap): And here.
	* coff-rs6000.c (xcoff_write_armap_old): And here.
	(xcoff_write_one_armap_big): And here.
	(xcoff_write_armap_big): And here.
	* ecoff.c (_bfd_ecoff_write_armap): And here.
	* elf64-mips.c (mips_elf64_write_armap): And here.

	* aoutf1.h (sunos_set_arch_mach): Make "mach" param an enum.
	* elf-m10300.c (elf_mn10300_mach): Return an unsigned long.
	* elf32-h8300.c (elf32_h8_mach): Likewise.
	* elf32-mips.c (elf_mips_mach): Likewise.
	* sparclynx.c (NAME(lynx,set_arch_mach)): Likewise.

	* aix386-core.c (aix386_core_file_p): Remove redundant bfd_release
	calls.
	(aix386_core_vec): Typo fix.

	* aout-arm.c: Include libaout.h and aout/aout64.h after N_TXTADDR
	etc. to avoid redefined macro warning.
	(MY(put_reloc)): Use bfd_vma for "value" rather than long.
	(MY(fix_pcrel_26)): Likewise.
	* aout-ns32k.c (MY(put_reloc)): Likewise.
	* aout-cris.c (MY(swap_ext_reloc_out)): Likewise for r_addend.
	* aoutx.h (NAME(aout,swap_ext_reloc_out)): Likewise.
	* coff-arm.c (coff_arm_relocate_section): Likewise for my_offset.

	* aout-encap.c: Include "file", not <file> for binutils headers.
	(encap_object_p): Half baked attempt to fix compile errors in
	code dealing with "magic".

	* aout-ns32k.c: Include "file", not <file> for binutils headers.
	(_bfd_ns32k_relocate_contents): get_data and put_data manipulate
	bfd_vma's rather than longs.
	* cpu-ns32k.c (ns32k_sign_extend): Delete.
	(_bfd_ns32k_get_displacement): Return a bfd_vma, don't pass in offset.
	(_bfd_ns32k_get_immediate): Likewise.  Add code for 8 byte values,
	remove case 3.
	(_bfd_ns32k_put_displacement): Accept a bfd_vma, don't pass in offset.
	Use unsigned comparisons.
	(bfd_ns32k_put_immediate): Likewise, and add code for 8 byte values.
	(do_ns32k_reloc): get_data and put_data operate on bfd_vma's.
	(_bfd_do_ns32k_reloc_contents): Likewise.
	* ns32k.h (_bfd_ns32k_get_displacement): Update prototype.
	(_bfd_ns32k_get_immediate): Likewise.
	(_bfd_ns32k_put_displacement): Likewise.
	(_bfd_ns32k_put_immediate): Likewise.
	(bfd_reloc_status_type): Likewise.

	* aoutx.h (NAME(aout,find_nearest_line)): Rename 'p' to 'colon'
	to avoid shadowing.
	* pdp11.c (NAME(aout,find_nearest_line)): Likewise.
	* coff-h8300.c (h8300_reloc16_extra_cases): Remove shadowing "value".
	* coff-ppc.c (enum ref_category): Rename "data" to "tocdata" to
	avoid shadowing.
	(record_toc): Use a bfd_signed_vma for our_toc_offset.
	* coffcode.h (coff_write_relocs): Rename "i" to avoid shadowing.
	* elf.c (bfd_elf_get_bfd_needed_list): Rename "link" var to avoid
	shadow warning.
	(_bfd_elfcore_strndup): Likewise for "dup".
	* elf32-cris.c (cris_elf_relocate_section): "symname" instead of
	"name" to avoid shadowing.
	* elf32-hppa.c (elf32_hppa_relocate_section): Remove duplicate
	definition of "off".
	* elf32-i386.c (elf_i386_relocate_section): Likewise.
	* elf32-mips.c (_bfd_mips_elf_modify_segment_map): Remove duplicate
	definition of "s".
	(_bfd_mips_elf_final_link): Rename "i" to "j".  Remove duplicate
	"secpp".
	* elf64-x86-64.c (elf64_x86_64_relocate_section): Rename inner "indx"
	to avoid shadowing.
	* elflink.h (elf_link_add_object_symbols): Rename "link" to "shlink"
	to avoid shadowing.
	(elf_link_input_bfd): Likewise.
	(elf_bfd_final_link): Remove duplicate innermost "off" var.
	* oasys.c (oasys_write_data): Rename innermost "p" to "sym".
	* reloc16.c (bfd_coff_reloc16_relax_section): Rename "i" param to
	"input_section".
	* som.c (som_prep_for_fixups): Rename inner "i" to "j".
	* sunos.c (sunos_add_dynamic_symbols): Localise "s" var.
	(sunos_write_dynamic_symbol): Remove unused vars.
	* syms.c (_bfd_stab_section_find_nearest_line): Remove duplicate
	innermost "directory_name" and "file_name" vars.
	* tekhex.c (first_phase): Rename local var "type" to "stype".
	(tekhex_write_object_contents): Rename innermost "s" to "sym".
	* vms-gsd.c (vms_secflag_by_name): Change "size" param to "hassize",
	doing comparison at caller.
	(vms_esecflag_by_name): Likewise.
	* vms-tir.c (etir_sto): Rename innermost "psect" to "psect1".
	* xcofflink.c (xcoff_link_input_bfd): Delete duplicate innermost "o".
	(xcoff_write_global_symbol): Rename "p" param to "inf".

	* cisco-core.c: Add missing prototypes.
	(cisco_core_file_failing_command): Add ATTRIBUTE_UNUSED.
	(cisco_core_file_failing_signal): Likewise.
	(cisco_core_file_matches_executable_p): Likewise.
	* hpux-core.c (hpux_core_core_file_failing_signal): Likewise.
	* netbsd-core.c (netbsd_core_file_matches_executable_p): Likewise.
	* osf-core.c (osf_core_core_file_matches_executable_p): Likewise.
	* sco5-core.c (sco5_core_file_matches_executable_p): Likewise.

	* coff-arm.c (coff_arm_link_hash_table): Use bfd_size_type for
	thumb_glue_size and arm_glue_size.
	* elf32-arm.h (elf32_arm_link_hash_table): Likewise here.

	* coff64-rs6000.c: Group prototypes together.

	* coffcode.h (coff_set_arch_mach): Add ATTRIBUTE_UNUSED.
	(buy_and_read): Remove "seek" param.  Change "size" to bfd_size_type.

	* cpu-arc.c: Add missing prototypes.
	* cpu-h8500.c: Likewise.
	* cpu-i960.c: Likewise.
	* cpu-pj.c: Likewise.
	* cpu-sh.c: Likewise.
	* cpu-w65.c: Likewise.
	* cpu-z8k.c: Likewise.
	* elf32-fr30.c: Likewise.
	* elf32-h8300.c: Likewise.
	* elf32-i370.c: Likewise.
	* hpux-core.c: Likewise.
	* versados.c: Likewise.

	* cpu-h8300.c (bfd_default_scan_num_mach): Don't declare.
	* cpu-h8500.c: Likewise.
	* cpu-i960.c: Likewise.
	* cpu-z8k.c: Likewise.

	* cpu-ia64-opc.c: Correct comment.

	* dwarf2.c (_bfd_dwarf2_find_nearest_line): Remove unused var.

	* elf-bfd.h (elf_size_info): Change count param of write_out_phdrs
	to unsigned.
	(bfd_elf32_write_out_phdrs): Likewise.
	(bfd_elf64_write_out_phdrs): Likewise.
	(elf_linker_section_pointers): Change addend to bfd_vma.
	(_bfd_elf_find_pointer_linker_section): Likewise.
	(_bfd_elfcore_make_pseudosection): Change size param to size_t and
	filepos to unsigned file_ptr.
	(_bfd_elfcore_strndup): Change max param to size_t.
	* elf.c (_bfd_elfcore_make_pseudosection): As above.
	(_bfd_elfcore_strndup): Likewise.
	(_bfd_elf_find_pointer_linker_section): Likewise.

	* elf-hppa.h (elf_hppa_relocate_insn): Return an int, and change
	insn and sym_value to ints.

	* elf.c (elf_read): Make "offset" param a file_ptr, "size" a
	bfd_size_type.
	(elfcore_read_notes): Likewise.

	* elf32-arm.h (elf32_arm_final_link_relocate): Change sym_flags
	param from unsigned char to int.
	(elf32_arm_relocate_section): If USE_REL, cast "rel" appropriately
	for info_to_howto call.
	(add_dynamic_entry): Define macro.
	(elf32_arm_size_dynamic_sections): Use add_dynamic_entry.

	* elf32-cris.c (add_dynamic_entry): Define macro.
	(elf_cris_size_dynamic_sections): Use add_dynamic_entry.

	* elf32-h8300.c (elf32_h8_final_write_processing): Make static.
	(elf32_h8_object_p): Likewise.
	(elf32_h8_merge_private_bfd_data): Likewise.
	(elf32_h8_relax_section): Cast gap to int so signed comparisons work.

	* elf32-hppa.c (add_dynamic_entry): Define macro.
	(elf32_hppa_size_dynamic_sections): Use it.
	* elf32-i370.c (add_dynamic_entry): Define macro.
	(i370_elf_size_dynamic_sections): Use it.
	(i370_noop): Make static.
	* elf32-i386.c (add_dynamic_entry): Define macro.
	(elf_i386_size_dynamic_sections): Use it.
	* elf32-m68k.c (add_dynamic_entry): Define macro.
	(elf_m68k_size_dynamic_sections): Use it.
	* elf32-ppc.c (add_dynamic_entry): Define macro.
	(ppc_elf_size_dynamic_sections): Use it.
	* elf32-s390.c (add_dynamic_entry): Define macro.
	(elf_s390_size_dynamic_sections): Use it.
	* elf64-alpha.c (add_dynamic_entry): Define macro.
	(elf64_alpha_size_dynamic_sections): Use it.
	* elf64-hppa.c (add_dynamic_entry): Define macro.
	(elf64_hppa_size_dynamic_sections): Use it.
	* elf64-ppc.c (add_dynamic_entry): Define macro.
	(ppc64_elf_size_dynamic_sections): Use it.
	* elf64-s390.c (add_dynamic_entry): Define macro.
	(elf_s390_size_dynamic_sections): Use it.
	* elf64-sparc.c (add_dynamic_entry): Define macro.
	(sparc64_elf_size_dynamic_sections): Use it.
	* elf64-x86-64.c (add_dynamic_entry): Define macro.
	(elf64_x86_64_size_dynamic_sections): Use it.
	* elfxx-ia64.c (add_dynamic_entry): Define macro.
	(elfNN_ia64_size_dynamic_sections): Use it.

	* elf32-v850.c (SEXT24): Modify to avoid signed/unsigned warning.
	(v850_elf_perform_relocation): Make "r_type" param unsigned.

	* elf64-mips.c (mips_elf64_slurp_one_reloc_table): Just return
	false if the first malloc fails rather than going via error_return.

	* elf64-sparc.c (sparc64_elf_plt_entry_offset): Use a bfd_vma for
	"index" param.
	(sparc64_elf_plt_ptr_offset): Likewise, and for "max" param too.

	* elfxx-ia64.c (global_sym_index): Return a long.

	* ieee.c (get_symbol): Use int rather than char param.
	(ieee_slurp_sections): Move "section" var to inner blocks.
	(copy_expression): Don't init "value" to zero or worry about
	clearing to zero after using.
	(ieee_write_debug_part): Rename "output_buffer" to "obuff" to avoid
	shadowing.

	* ihex.c (ihex_write_record): Make "count" var a size_t, "addr" an
	unsigned int.

	* libbfd-in.h (BFD_ALIGN): Add cast to avoid signed/unsigned warning.
	(bfd_write_bigendian_4byte_int): Pass an unsigned int value param.

	* mipsbsd.c (mips_fix_jmp_addr): Add "error_message" param.

	* pc532-mach.c (MYNSX): Delete.
	(ns32kaout_bfd_reloc_type_lookup): Define prototype without MYNSX.
	(write_object_contents): Correct prototype.

	* peicode.h (pe_ILF_build_a_bfd): Use an unsigned int param rather
	than unsigned short.

	* section.c (bfd_set_section_contents): Remove redundant
	"offset < 0" test.  Check that "count" doesn't overflow size_t.
	(bfd_get_section_contents): Likewise.

	* som.c (som_fixup_formats): Add missing braces.
	(som_reloc_addend): Pass a bfd_vma for "addend".

	* srec.c (srec_write_record): Pass "type" as an unsigned int.
	(srec_write_symbols): Remove an unnecessary var.

	* targets.c (_bfd_target_vector): Sort entries.  Sort externs
	to match.
	* configure.in: Sort to match.  Bump version number.
	* configure: Regenerate.

	* tekhex.c (move_section_contents): Assert offset == 0.

	* versados.c (new_symbol_string): Constify arg.
	(process_esd): Use bfd_und_section_ptr rather than &bfd_und_section.
	(versados_get_symbol_info): Make static.
	(versados_print_symbol): Likewise.
	(versados_get_reloc_upper_bound): Likewise.
	(versados_canonicalize_reloc): Likewise.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: bfd_read and bfd_write
  2001-09-10 17:56         ` Hans-Peter Nilsson
@ 2001-09-10 18:04           ` Ian Lance Taylor
  0 siblings, 0 replies; 17+ messages in thread
From: Ian Lance Taylor @ 2001-09-10 18:04 UTC (permalink / raw)
  To: Hans-Peter Nilsson; +Cc: Jim Blandy, Alan Modra, binutils, gdb-patches

Hans-Peter Nilsson <hp@bitrange.com> writes:

> On 10 Sep 2001, Ian Lance Taylor wrote:
> > Hans-Peter Nilsson <hp@bitrange.com> writes:
> > > If it didn't have a slightly wacky twist, it wouldn't be a good
> > > name. :-)  I still don't get the original BFD one, though.
> >
> > Which original BFD one?
> 
> That BFD (also) alludes to something other than Binary File
> Descriptor, because of this passage from bfd/doc/bfd.texinfo,
> node History:
> "The name came from a conversation David Wallace was having with
>  Richard Stallman about the library: RMS said that it would be
>  quite hard---David said ``BFD''.  Stallman was right, but the
>  name stuck."
> Me not native speaker.  Could it be as profane as "big f..ng deal"?

It could be and it is.

Ian

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: bfd_read and bfd_write
  2001-09-10  9:51       ` Ian Lance Taylor
@ 2001-09-10 17:56         ` Hans-Peter Nilsson
  2001-09-10 18:04           ` Ian Lance Taylor
  0 siblings, 1 reply; 17+ messages in thread
From: Hans-Peter Nilsson @ 2001-09-10 17:56 UTC (permalink / raw)
  To: Ian Lance Taylor; +Cc: Jim Blandy, Alan Modra, binutils, gdb-patches

On 10 Sep 2001, Ian Lance Taylor wrote:
> Hans-Peter Nilsson <hp@bitrange.com> writes:
> > If it didn't have a slightly wacky twist, it wouldn't be a good
> > name. :-)  I still don't get the original BFD one, though.
>
> Which original BFD one?

That BFD (also) alludes to something other than Binary File
Descriptor, because of this passage from bfd/doc/bfd.texinfo,
node History:
"The name came from a conversation David Wallace was having with
 Richard Stallman about the library: RMS said that it would be
 quite hard---David said ``BFD''.  Stallman was right, but the
 name stuck."
Me not native speaker.  Could it be as profane as "big f..ng deal"?

brgds, H-P

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: bfd_read and bfd_write
  2001-09-09  7:24     ` Hans-Peter Nilsson
@ 2001-09-10  9:51       ` Ian Lance Taylor
  2001-09-10 17:56         ` Hans-Peter Nilsson
  0 siblings, 1 reply; 17+ messages in thread
From: Ian Lance Taylor @ 2001-09-10  9:51 UTC (permalink / raw)
  To: Hans-Peter Nilsson; +Cc: Jim Blandy, Alan Modra, binutils, gdb-patches

Hans-Peter Nilsson <hp@bitrange.com> writes:

> On 9 Sep 2001, Jim Blandy wrote:
> > Hans-Peter Nilsson <hp@bitrange.com> writes:
> > > If you go for new names anyway, I suggest bfd_bread and
> >
> > ... bfd_butter?  bfd_wine and bfd_thou?
> 
> If it didn't have a slightly wacky twist, it wouldn't be a good
> name. :-)  I still don't get the original BFD one, though.

Which original BFD one?

Ian

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: bfd_read and bfd_write
  2001-09-08 22:42   ` Jim Blandy
@ 2001-09-09  7:24     ` Hans-Peter Nilsson
  2001-09-10  9:51       ` Ian Lance Taylor
  0 siblings, 1 reply; 17+ messages in thread
From: Hans-Peter Nilsson @ 2001-09-09  7:24 UTC (permalink / raw)
  To: Jim Blandy; +Cc: Alan Modra, binutils, gdb-patches

On 9 Sep 2001, Jim Blandy wrote:
> Hans-Peter Nilsson <hp@bitrange.com> writes:
> > If you go for new names anyway, I suggest bfd_bread and
>
> ... bfd_butter?  bfd_wine and bfd_thou?

If it didn't have a slightly wacky twist, it wouldn't be a good
name. :-)  I still don't get the original BFD one, though.

brgds, H-P

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: bfd_read and bfd_write
  2001-09-05 20:13 ` Hans-Peter Nilsson
  2001-09-05 20:30   ` Alan Modra
@ 2001-09-08 22:42   ` Jim Blandy
  2001-09-09  7:24     ` Hans-Peter Nilsson
  1 sibling, 1 reply; 17+ messages in thread
From: Jim Blandy @ 2001-09-08 22:42 UTC (permalink / raw)
  To: Hans-Peter Nilsson; +Cc: Alan Modra, binutils, gdb-patches

Hans-Peter Nilsson <hp@bitrange.com> writes:
> If you go for new names anyway, I suggest bfd_bread and

... bfd_butter?  bfd_wine and bfd_thou?

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: bfd_read and bfd_write
  2001-09-05 20:03         ` Andrew Cagney
@ 2001-09-06 10:33           ` Nick Clifton
  0 siblings, 0 replies; 17+ messages in thread
From: Nick Clifton @ 2001-09-06 10:33 UTC (permalink / raw)
  To: Alan Modra, Andrew Cagney; +Cc: binutils, gdb-patches

Hi Andrew, Hi Alan,

> could i suggest taking a step back and deciding what bfd's policy is
> going to be on public / external interfaces.  remember, bfd is a
> library used by more than gdb and the other code immediately to hand.
> i don't think changing public / external interfaces should be taken
> lightly

I agree.  In this case since we are changing the interface to bfd we
ought to take some time to give other users of the library a chance to
upgrade their software.

I like the idea of adding the new interface, with new function names,
and a warning message being generated if the old interface is used, as
part of the current CVS sources/forthcoming release.  Then in the
release after that, we can remove the old interface.

It takes longer this way I know, but I think that we ought to give
other binary tool developers a chance to change their software.

Cheers
        Nick



^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: bfd_read and bfd_write
  2001-09-05 23:15         ` Andreas Jaeger
@ 2001-09-06  0:01           ` Alan Modra
  0 siblings, 0 replies; 17+ messages in thread
From: Alan Modra @ 2001-09-06  0:01 UTC (permalink / raw)
  To: Andreas Jaeger; +Cc: Andrew Cagney, binutils, gdb-patches

On Thu, Sep 06, 2001 at 08:15:23AM +0200, Andreas Jaeger wrote:
> Alan Modra <amodra@bigpond.net.au> writes:
> 
> Have you done --enable-targets=all --enable-64-bit-bfd builds - and
> fixed all those warnings?  Wow!  I'm looking forward to that patch.

Yes.

> In that case we should add -Wconversion to build_warnings.

No, because of zillions of warnings courtesy of glibc like:

/usr/include/bits/string2.h: In function `__strsep_g':
/usr/include/bits/string2.h:1171: warning: passing arg 2 of `__strpbrk_c2' with different width due to prototype
/usr/include/bits/string2.h:1171: warning: passing arg 3 of `__strpbrk_c2' with different width due to prototype
/usr/include/bits/string2.h:1171: warning: passing arg 2 of `__strpbrk_c3' with different width due to prototype
/usr/include/bits/string2.h:1171: warning: passing arg 3 of `__strpbrk_c3' with different width due to prototype
/usr/include/bits/string2.h:1171: warning: passing arg 4 of `__strpbrk_c3' with different width due to prototype

Alan

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: bfd_read and bfd_write
  2001-09-05 18:52       ` Alan Modra
  2001-09-05 20:03         ` Andrew Cagney
@ 2001-09-05 23:15         ` Andreas Jaeger
  2001-09-06  0:01           ` Alan Modra
  1 sibling, 1 reply; 17+ messages in thread
From: Andreas Jaeger @ 2001-09-05 23:15 UTC (permalink / raw)
  To: Andrew Cagney; +Cc: binutils, gdb-patches

Alan Modra <amodra@bigpond.net.au> writes:

>> it also covers the k&r problem - you cant rely on a k&r compiler to 
>> report parameter mismatches.
>
> That's the other part of my bfd patchset:  Fixing all the -Wconversion
> errors that gcc reports.  I've done 32 bit native, 32 -> 64 bit xcompiles,
> with 64 bit native and 64 -> 32 bit xcompiles yet to do.  The last two
> cases should catch all the int/long mismatches, the first two catch
> int/long vs. bfd_vma/bfd_size_type etc. mismatches.

Have you done --enable-targets=all --enable-64-bit-bfd builds - and
fixed all those warnings?  Wow!  I'm looking forward to that patch.

In that case we should add -Wconversion to build_warnings.

thanks,
Andreas
-- 
 Andreas Jaeger
  SuSE Labs aj@suse.de
   private aj@arthur.inka.de
    http://www.suse.de/~aj

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: bfd_read and bfd_write
  2001-09-05 20:13 ` Hans-Peter Nilsson
@ 2001-09-05 20:30   ` Alan Modra
  2001-09-08 22:42   ` Jim Blandy
  1 sibling, 0 replies; 17+ messages in thread
From: Alan Modra @ 2001-09-05 20:30 UTC (permalink / raw)
  To: Hans-Peter Nilsson; +Cc: binutils, gdb-patches

On Wed, Sep 05, 2001 at 11:13:32PM -0400, Hans-Peter Nilsson wrote:
> 
> If you go for new names anyway, I suggest bfd_bread and
> bfd_bwrite.

I'll probably go with this idea.  Anyone for bfd_bread and bfd_butter? :-)

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: bfd_read and bfd_write
  2001-09-04 22:20 Alan Modra
  2001-09-05  9:45 ` Andrew Cagney
@ 2001-09-05 20:13 ` Hans-Peter Nilsson
  2001-09-05 20:30   ` Alan Modra
  2001-09-08 22:42   ` Jim Blandy
  1 sibling, 2 replies; 17+ messages in thread
From: Hans-Peter Nilsson @ 2001-09-05 20:13 UTC (permalink / raw)
  To: Alan Modra; +Cc: binutils, gdb-patches

On Wed, 5 Sep 2001, Alan Modra wrote:
> This change will of course break gdb, for which I have patches, and
> any uncontributed ports.
>
> Comments/flames?

It's a simple, mechanical change that gets rid of a redundant
parameter.  Go wild!

If you go for new names anyway, I suggest bfd_bread and
bfd_bwrite.

brgds, H-P
PS.  Also speaking from having an uncontributed port.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: bfd_read and bfd_write
  2001-09-05 18:52       ` Alan Modra
@ 2001-09-05 20:03         ` Andrew Cagney
  2001-09-06 10:33           ` Nick Clifton
  2001-09-05 23:15         ` Andreas Jaeger
  1 sibling, 1 reply; 17+ messages in thread
From: Andrew Cagney @ 2001-09-05 20:03 UTC (permalink / raw)
  To: Alan Modra; +Cc: binutils, gdb-patches

 > I have patches for all of bfd, gas, gdb.  Shouldn't be more than half an
 > hour checking them all in, unless my net connection breaks or something.
 > I tend to agree with rth that it's better to break things temporarily
 > and force use of a new interface than leave compatibility code around,
 > unless it's a major effort to change over.
 >
 > Of course, you could force me to leave the old code in by witholding
 > permission to make the changes to gdb.   [:-)]

could i suggest taking a step back and deciding what bfd's policy is 
going to be on public / external interfaces.  remember, bfd is a library 
used by more than gdb and the other code immediately to hand.  i don't 
think changing public / external interfaces should be taken lightly (are 
you bumping the shlib version?).

i'd strongly recommend at least changing the function name as well as 
the function signature - that way old code can't pick up the new 
interface.  i'd also prefer to have the old interface around for at 
least a wee bit (allow mix 'n' match) of new bfd, old ... and give the 
change a chance to propogate / settle.  this also guarentees that gdb 
continues to _always_ be buildable.  i'm also some what puzzled as to 
why this all has to be done as a single jumbo patch, three separate 
patches (add new, change, delete old) are surely easier.

if you want, i can also add a check to gdb that ensures that the old 
function isn't used.

enjoy
	andrew

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: bfd_read and bfd_write
  2001-09-05 17:26     ` Andrew Cagney
@ 2001-09-05 18:52       ` Alan Modra
  2001-09-05 20:03         ` Andrew Cagney
  2001-09-05 23:15         ` Andreas Jaeger
  0 siblings, 2 replies; 17+ messages in thread
From: Alan Modra @ 2001-09-05 18:52 UTC (permalink / raw)
  To: Andrew Cagney; +Cc: binutils, gdb-patches

On Wed, Sep 05, 2001 at 08:26:26PM -0400, Andrew Cagney wrote:
> > On Wed, Sep 05, 2001 at 12:45:10PM -0400, Andrew Cagney wrote:
> > 
> >> rather than change the function signature, why not introduce a new 
> >> interface and then deprecate the old one?
> > 
> > 
> > Because then you'll never get rid of the old interface.
> why not introduce the new _external_ interface, go around eliminating 
> all known uses of the old.  once done (new release made?) zap the old 
> interface.  a common pratice is to add code to the old interface to 
> issue a warning the first time it is called.
> 
> alan's basic problem of needing to co-ordinate everything so it can all 
> happen at once just goes away.

I have patches for all of bfd, gas, gdb.  Shouldn't be more than half an
hour checking them all in, unless my net connection breaks or something.
I tend to agree with rth that it's better to break things temporarily
and force use of a new interface than leave compatibility code around,
unless it's a major effort to change over.

Of course, you could force me to leave the old code in by witholding
permission to make the changes to gdb.  :-)

> it also covers the k&r problem - you cant rely on a k&r compiler to 
> report parameter mismatches.

That's the other part of my bfd patchset:  Fixing all the -Wconversion
errors that gcc reports.  I've done 32 bit native, 32 -> 64 bit xcompiles,
with 64 bit native and 64 -> 32 bit xcompiles yet to do.  The last two
cases should catch all the int/long mismatches, the first two catch
int/long vs. bfd_vma/bfd_size_type etc. mismatches.

Alan

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: bfd_read and bfd_write
  2001-09-05 12:21   ` Richard Henderson
@ 2001-09-05 17:26     ` Andrew Cagney
  2001-09-05 18:52       ` Alan Modra
  0 siblings, 1 reply; 17+ messages in thread
From: Andrew Cagney @ 2001-09-05 17:26 UTC (permalink / raw)
  To: Richard Henderson; +Cc: Alan Modra, binutils, gdb-patches

> On Wed, Sep 05, 2001 at 12:45:10PM -0400, Andrew Cagney wrote:
> 
>> rather than change the function signature, why not introduce a new 
>> interface and then deprecate the old one?
> 
> 
> Because then you'll never get rid of the old interface.
why not introduce the new _external_ interface, go around eliminating 
all known uses of the old.  once done (new release made?) zap the old 
interface.  a common pratice is to add code to the old interface to 
issue a warning the first time it is called.

alan's basic problem of needing to co-ordinate everything so it can all 
happen at once just goes away.

it also covers the k&r problem - you cant rely on a k&r compiler to 
report parameter mismatches.

andrew


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: bfd_read and bfd_write
  2001-09-05  9:45 ` Andrew Cagney
@ 2001-09-05 12:21   ` Richard Henderson
  2001-09-05 17:26     ` Andrew Cagney
  0 siblings, 1 reply; 17+ messages in thread
From: Richard Henderson @ 2001-09-05 12:21 UTC (permalink / raw)
  To: Andrew Cagney; +Cc: Alan Modra, binutils, gdb-patches

On Wed, Sep 05, 2001 at 12:45:10PM -0400, Andrew Cagney wrote:
> rather than change the function signature, why not introduce a new 
> interface and then deprecate the old one?

Because then you'll never get rid of the old interface.
BFD already has way too much cruft as it is.


r~

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: bfd_read and bfd_write
  2001-09-04 22:20 Alan Modra
@ 2001-09-05  9:45 ` Andrew Cagney
  2001-09-05 12:21   ` Richard Henderson
  2001-09-05 20:13 ` Hans-Peter Nilsson
  1 sibling, 1 reply; 17+ messages in thread
From: Andrew Cagney @ 2001-09-05  9:45 UTC (permalink / raw)
  To: Alan Modra; +Cc: binutils, gdb-patches

> I have a (rather large) patch to clean up a few things in bfd that I'd
> like to apply in the next day or so, but first thought I'd better give
> people fair warning and a chance to object.
> 
> One of the changes I've made is to bfd_read, and similarly bfd_write.
> 
>  bfd_size_type
> -bfd_read (ptr, size, nitems, abfd)
> +bfd_read (ptr, size, abfd)
>       PTR ptr;
>       bfd_size_type size;
> -     bfd_size_type nitems;
>       bfd *abfd;


rather than change the function signature, why not introduce a new 
interface and then deprecate the old one?


> 


^ permalink raw reply	[flat|nested] 17+ messages in thread

* bfd_read and bfd_write
@ 2001-09-04 22:20 Alan Modra
  2001-09-05  9:45 ` Andrew Cagney
  2001-09-05 20:13 ` Hans-Peter Nilsson
  0 siblings, 2 replies; 17+ messages in thread
From: Alan Modra @ 2001-09-04 22:20 UTC (permalink / raw)
  To: binutils; +Cc: gdb-patches

I have a (rather large) patch to clean up a few things in bfd that I'd
like to apply in the next day or so, but first thought I'd better give
people fair warning and a chance to object.

One of the changes I've made is to bfd_read, and similarly bfd_write.

 bfd_size_type
-bfd_read (ptr, size, nitems, abfd)
+bfd_read (ptr, size, abfd)
      PTR ptr;
      bfd_size_type size;
-     bfd_size_type nitems;
      bfd *abfd;

Why the change?  Well, in having both "size" and "nitems", you'd expect
bfd_read to behave like fread, but it doesn't.  bfd_read returns
"size * nitems" on success, whereas fread returns "nitems".  Additionally,
many places in bfd swap the "size" and "nitems" args, and technically
we should always have size == 1 since we are operating on files of bytes.
This doesn't really matter as bfd_read does the multiplication and
passes size == 1 down to fread, but we're breaking the fread abstraction.

This change will of course break gdb, for which I have patches, and
any uncontributed ports.

Comments/flames?

Alan

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2001-09-18  3:32 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-09-18  3:32 bfd_read and bfd_write Alan Modra
  -- strict thread matches above, loose matches on Subject: below --
2001-09-04 22:20 Alan Modra
2001-09-05  9:45 ` Andrew Cagney
2001-09-05 12:21   ` Richard Henderson
2001-09-05 17:26     ` Andrew Cagney
2001-09-05 18:52       ` Alan Modra
2001-09-05 20:03         ` Andrew Cagney
2001-09-06 10:33           ` Nick Clifton
2001-09-05 23:15         ` Andreas Jaeger
2001-09-06  0:01           ` Alan Modra
2001-09-05 20:13 ` Hans-Peter Nilsson
2001-09-05 20:30   ` Alan Modra
2001-09-08 22:42   ` Jim Blandy
2001-09-09  7:24     ` Hans-Peter Nilsson
2001-09-10  9:51       ` Ian Lance Taylor
2001-09-10 17:56         ` Hans-Peter Nilsson
2001-09-10 18:04           ` Ian Lance Taylor

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).