Mon Aug 19 13:48:22 1991 Roland H. Pesch (pesch at cygint.cygnus.com)
* aoutx.h, archive.c, archures.c, bfd.c, bfd.texinfo, cache.c,
coffcode.h, core.c, format.c, libbfd.c, libbfd.h, libcoff.h,
opncls.c, reloc.c, section.c, syms.c, targets.c (documentation
segments): used BFD (caps) more consistently as a name in
discourse, fixed a few other minor typos and uses of fonts
1991-08-19 22:52:38 +02:00
|
|
|
|
/* opncls.c -- open and close a BFD.
|
1997-03-17 17:36:08 +01:00
|
|
|
|
Copyright (C) 1990, 91, 92, 93, 94, 95, 96, 1997
|
|
|
|
|
Free Software Foundation, Inc.
|
|
|
|
|
|
Mon Aug 19 13:48:22 1991 Roland H. Pesch (pesch at cygint.cygnus.com)
* aoutx.h, archive.c, archures.c, bfd.c, bfd.texinfo, cache.c,
coffcode.h, core.c, format.c, libbfd.c, libbfd.h, libcoff.h,
opncls.c, reloc.c, section.c, syms.c, targets.c (documentation
segments): used BFD (caps) more consistently as a name in
discourse, fixed a few other minor typos and uses of fonts
1991-08-19 22:52:38 +02:00
|
|
|
|
Written by Cygnus Support.
|
1991-05-02 06:11:40 +02:00
|
|
|
|
|
Mon Aug 19 13:48:22 1991 Roland H. Pesch (pesch at cygint.cygnus.com)
* aoutx.h, archive.c, archures.c, bfd.c, bfd.texinfo, cache.c,
coffcode.h, core.c, format.c, libbfd.c, libbfd.h, libcoff.h,
opncls.c, reloc.c, section.c, syms.c, targets.c (documentation
segments): used BFD (caps) more consistently as a name in
discourse, fixed a few other minor typos and uses of fonts
1991-08-19 22:52:38 +02:00
|
|
|
|
This file is part of BFD, the Binary File Descriptor library.
|
1991-03-21 22:11:25 +01:00
|
|
|
|
|
Mon Aug 19 13:48:22 1991 Roland H. Pesch (pesch at cygint.cygnus.com)
* aoutx.h, archive.c, archures.c, bfd.c, bfd.texinfo, cache.c,
coffcode.h, core.c, format.c, libbfd.c, libbfd.h, libcoff.h,
opncls.c, reloc.c, section.c, syms.c, targets.c (documentation
segments): used BFD (caps) more consistently as a name in
discourse, fixed a few other minor typos and uses of fonts
1991-08-19 22:52:38 +02:00
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
1991-03-21 22:11:25 +01:00
|
|
|
|
it under the terms of the GNU General Public License as published by
|
Mon Aug 19 13:48:22 1991 Roland H. Pesch (pesch at cygint.cygnus.com)
* aoutx.h, archive.c, archures.c, bfd.c, bfd.texinfo, cache.c,
coffcode.h, core.c, format.c, libbfd.c, libbfd.h, libcoff.h,
opncls.c, reloc.c, section.c, syms.c, targets.c (documentation
segments): used BFD (caps) more consistently as a name in
discourse, fixed a few other minor typos and uses of fonts
1991-08-19 22:52:38 +02:00
|
|
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
|
|
|
(at your option) any later version.
|
1991-03-21 22:11:25 +01:00
|
|
|
|
|
Mon Aug 19 13:48:22 1991 Roland H. Pesch (pesch at cygint.cygnus.com)
* aoutx.h, archive.c, archures.c, bfd.c, bfd.texinfo, cache.c,
coffcode.h, core.c, format.c, libbfd.c, libbfd.h, libcoff.h,
opncls.c, reloc.c, section.c, syms.c, targets.c (documentation
segments): used BFD (caps) more consistently as a name in
discourse, fixed a few other minor typos and uses of fonts
1991-08-19 22:52:38 +02:00
|
|
|
|
This program is distributed in the hope that it will be useful,
|
1991-03-21 22:11:25 +01:00
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
Mon Aug 19 13:48:22 1991 Roland H. Pesch (pesch at cygint.cygnus.com)
* aoutx.h, archive.c, archures.c, bfd.c, bfd.texinfo, cache.c,
coffcode.h, core.c, format.c, libbfd.c, libbfd.h, libcoff.h,
opncls.c, reloc.c, section.c, syms.c, targets.c (documentation
segments): used BFD (caps) more consistently as a name in
discourse, fixed a few other minor typos and uses of fonts
1991-08-19 22:52:38 +02:00
|
|
|
|
along with this program; if not, write to the Free Software
|
* configure.in: Call AC_CONFIG_HEADER. Substitute
HOST_64BIT_LONG. Check that various header files exist. Check
that fcntl exists. Call BFD_BINARY_FOPEN. Check whether malloc
and/or free need to be declared. Don't make a link to sysdep.h.
Define TRAD_HEADER for various hosts.
* configure: Rebuild.
* configure.host: Don't set my_host. Add definitions taken from
host header files for various entries. Remove entries which now
do nothing.
* acconfig.h: New file.
* config.h.in: New file, built by autoheader.
* sysdep.h: New file.
* Makefile.in (do_distclean): Don't remove sysdep.h.
(RECONFIG): Remove.
(LOCAL_H_DEPS): New variable.
($(BFD_LIBS)): Use $(LOCAL_H_DEPS) rather than libbfd.h and
$(RECONFIG).
($(BFD_MACHINES), $(BFD_BACKENDS)): Likewise.
($(OPTIONAL_BACKENDS)): Likewise.
(stmp-bfd.h): Just substitute for BFD_HOST_64BIT_LONG, rather than
looking through sysdep.h.
* bfd-in.h (BFD_HOST_64BIT_LONG): Define; set by Makefile.
(BFD_HOST_64_BIT): Define based on BFD_HOST_64BIT_LONG.
(fprintf_vma, sprintf_vma): Likewise.
(int64_type, uint64_type): Don't define.
* bfd-in2.h: Rebuild.
* archures.c, bfd.c, srec.c: Include <ctype.h>.
* elfcore.h: Check HAVE_SYS_PROCFS_H rather than HAVE_PROCFS.
* lynx-core.c: Include stuff from old hosts/lynx.h.
* opncls.c (bfd_fdopenr): Check HAVE_FNCTL and defined (F_GETFL),
rather than NO_FCNTL.
* targets.c (bfd_target_list): Check HOST_HPPAHPUX and ! __STDC__
rather than NATIVE_HPPAHPUX_COMPILER.
* trad-core.c: Don't include <errno.h>. Include TRAD_HEADER if it
is defined.
* hosts/*.h: Remove all header files which merely include,
declare, and define things. Leave header files which define
information needed by trad-core.c.
1995-09-07 00:53:43 +02:00
|
|
|
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
1991-03-21 22:11:25 +01:00
|
|
|
|
|
|
|
|
|
#include "bfd.h"
|
1991-11-12 03:46:26 +01:00
|
|
|
|
#include "sysdep.h"
|
1997-03-18 01:47:04 +01:00
|
|
|
|
#include "objalloc.h"
|
1991-03-21 22:11:25 +01:00
|
|
|
|
#include "libbfd.h"
|
1995-01-15 23:04:02 +01:00
|
|
|
|
|
|
|
|
|
#ifndef S_IXUSR
|
|
|
|
|
#define S_IXUSR 0100 /* Execute by owner. */
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef S_IXGRP
|
|
|
|
|
#define S_IXGRP 0010 /* Execute by group. */
|
|
|
|
|
#endif
|
|
|
|
|
#ifndef S_IXOTH
|
|
|
|
|
#define S_IXOTH 0001 /* Execute by others. */
|
|
|
|
|
#endif
|
1991-03-21 22:11:25 +01:00
|
|
|
|
|
|
|
|
|
/* fdopen is a loser -- we should use stdio exclusively. Unfortunately
|
|
|
|
|
if we do that we can't use fcntl. */
|
Mon Aug 19 13:48:22 1991 Roland H. Pesch (pesch at cygint.cygnus.com)
* aoutx.h, archive.c, archures.c, bfd.c, bfd.texinfo, cache.c,
coffcode.h, core.c, format.c, libbfd.c, libbfd.h, libcoff.h,
opncls.c, reloc.c, section.c, syms.c, targets.c (documentation
segments): used BFD (caps) more consistently as a name in
discourse, fixed a few other minor typos and uses of fonts
1991-08-19 22:52:38 +02:00
|
|
|
|
|
1997-03-18 01:47:04 +01:00
|
|
|
|
/* FIXME: This is no longer used. */
|
Tue Jan 9 15:22:53 1996 David Mosberger-Tang <davidm@azstarnet.com>
* coff-alpha.c (alpha_relocate_section): During final link, allow
output .lita section to be bigger than 64k by adjusting gp value
on a per-input section basis.
* libecoff.h (struct ecoff_tdata): Add issued_multiple_gp_warning
field.
(struct ecoff_section_tdata): Add gp field.
Tue Jan 9 12:00:36 1996 Ian Lance Taylor <ian@cygnus.com>
Handle Alpha ECOFF changes in OSF/1 3.2.
* libecoff.h (struct ecoff_backend_data): Add get_elt_at_filepos
field.
* coff-alpha.c: Include "aout/ar.h".
(alpha_ecoff_get_relocated_section_contents): Don't require an
ALPHA_R_IGNORE reloc after an ALPHA_R_GPDISP reloc, since OSF/1
3.2 doesn't generate one.
(alpha_relocate_section): Likewise.
(alpha_ecoff_slurp_armap): Define.
(alpha_ecoff_slurp_extended_name_table): Define.
(alpha_ecoff_construct_extended_name_table): Define.
(alpha_ecoff_truncate_arname): Define.
(alpha_ecoff_write_armap): Define.
(alpha_ecoff_generic_stat_arch_elt): Define.
(alpha_ecoff_update_armap_timestamp): Define.
(ARFZMAG): Define.
(alpha_ecoff_read_ar_hdr): New static function.
(alpha_ecoff_get_elt_at_filepos): New static function.
(alpha_ecoff_openr_next_archived_file): New static function.
(alpha_ecoff_get_elt_at_index): New static function.
(alpha_ecoff_backend_data): Initialize get_elt_at_filepos field.
(ecoffalpha_little_vec): Change BFD_JUMP_TABLE_ARCHIVE from
_bfd_ecoff to alpha_ecoff.
* ecoff.c (ecoff_link_add_archive_symbols): Use get_elt_at_filepos
field from backend structure, rather than always calling
_bfd_get_elt_at_filepos.
* coff-mips.c (mips_ecoff_backend_data): Initialize
get_elt_at_filepos field.
* archive.c (_bfd_generic_read_ar_hdr_mag): New function, copied
from _bfd_generic_read_ar_hdr with minor changes.
(_bfd_generic_read_ar_hdr): Use _bfd_generic_read_ar_hdr_mag.
* libbfd-in.h (_bfd_generic_read_ar_hdr_mag): Declare.
* libbfd.h: Rebuild.
* bfd-in.h (BFD_IN_MEMORY): Define.
* libbfd-in.h (struct bfd_in_memory): Define.
* libbfd.c (bfd_read): Handle BFD_IN_MEMORY flag.
(bfd_get_file_window): Don't try to map a BFD_IN_MEMORY file.
(bfd_write, bfd_stat): Abort if BFD_IN_MEMORY is set.
(bfd_tell, bfd_flush, bfd_seek): Handle BFD_IN_MEMORY flag.
* bfd.c (struct _bfd): Change iostream field from char * to PTR.
(bfd_get_size): Handle BFD_IN_MEMORY flag.
* cache.c (bfd_cache_close): Ignore BFD_IN_MEMORY files.
(bfd_open_file): Cast to PTR, not char *, when setting iostream.
(bfd_cache_lookup_worker): Abort if BFD_IN_MEMORY is set.
* opncls.c (bfd_fdopenr): Cast to PTR, not char *, when setting
iostream.
(bfd_openstreamr): Likewise.
* aoutx.h (NAME(aout,some_aout_object_p)): Only fstat iostream if
BFD_IN_MEMORY is not set.
* riscix.c (riscix_some_aout_object_p): Likewise.
* bfd-in2.h, libbfd.h: Rebuild.
* targets.c (bfd_target): Add _bfd_get_elt_at_index field.
(BFD_JUMP_TABLE_ARCHIVE): Add _get_elt_at_index.
(bfd_get_elt_at_index): Define.
* archive.c (_bfd_generic_get_elt_at_index): Rename from
bfd_get_elt_at_index. Change index parameter from int to
symindex.
* libbfd-in.h (_bfd_generic_get_elt_at_index): Declare.
(_bfd_noarchive_get_elt_at_index): Define.
(_bfd_archive_bsd_get_elt_at_index): Define.
(_bfd_archive_coff_get_elt_at_index): Define.
* bfd-in2.h, libbfd.h: Rebuild.
* aout-target.h (MY_get_elt_at_index): Define if not defined.
* coff-rs6000.c (xcoff_get_elt_at_index): Define.
* ieee.c (ieee_get_elt_at_index): Define.
* libecoff.h (_bfd_ecoff_get_elt_at_index): Define.
* oasys.c (oasys_get_elt_at_index): Define.
* som.c (som_get_elt_at_index): Define.
1996-01-09 21:40:39 +01:00
|
|
|
|
long _bfd_chunksize = -1;
|
|
|
|
|
|
1991-05-02 06:11:40 +02:00
|
|
|
|
/* Return a new BFD. All BFD's are allocated through this routine. */
|
|
|
|
|
|
1993-11-04 23:49:47 +01:00
|
|
|
|
bfd *
|
1994-01-25 19:14:25 +01:00
|
|
|
|
_bfd_new_bfd ()
|
1991-03-21 22:11:25 +01:00
|
|
|
|
{
|
1991-04-23 18:02:09 +02:00
|
|
|
|
bfd *nbfd;
|
1991-05-02 06:11:40 +02:00
|
|
|
|
|
1997-03-18 01:47:04 +01:00
|
|
|
|
nbfd = (bfd *) bfd_zmalloc (sizeof (bfd));
|
|
|
|
|
if (nbfd == NULL)
|
|
|
|
|
return NULL;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
|
1997-03-18 01:47:04 +01:00
|
|
|
|
nbfd->memory = (PTR) objalloc_create ();
|
|
|
|
|
if (nbfd->memory == NULL)
|
Make all callers of malloc or realloc (including via obstacks)
check the result for NULL. Most set bfd_error to no_memory and
return in that case; a few are harder to fix, and are marked
with "FIXME <return type>".
* elf32-hppa.c (hppa_elf_build_arg_reloc_stub
hppa_elf_build_long_branch_stub): Check bfd_make_empty_symbol return.
* linker.c (_bfd_generic_link_output_symbols
_bfd_generic_link_write_global_symbol): Ditto
* section.c (bfd_make_section_anyway): Ditto.
* tekhex.c (find_chunk tekhex_mkobject): Check bfd_alloc.
(first_phase): Ditto. FIXME void
(tekhex_make_empty_symbol): Check bfd_zalloc.
* sunos.c (sunos_read_dynamic_info): Check bfd_zalloc.
(MY(read_dynamic_symbols) MY(read_dynamic_relocs)): Check bfd_alloc.
* stringhash.c (_bfd_stringtab_hash_newfunc): Check bfd_hash_allocate.
* srec.c: Indent.
(fillup_symbols): Check bfd_alloc. FIXME void
(srec_mkobject srec_get_section_contents
srec_set_section_contents): Check bfd_alloc.
(srec_make_empty_symbol): Check bfd_zalloc.
* som.c (hppa_som_gen_reloc_type): Check bfd_alloc_by_size_t.
(make_unique_section): Check bfd_alloc.
(som_new_section_hook): Check bfd_zalloc.
(bfd_som_attach_aux_hdr): Ditto. FIXME void
* rs6000-core.c (rs6000coff_core_p): Check bfd_zalloc.
* osf-core.c (osf_core_make_empty_symbol): Check bfd_zalloc.
(osf_core_core_file_p): Check bfd_alloc.
* oasys.c (oasys_slurp_symbol_table oasys_archive_p
oasys_mkobject oasys_object_p oasys_new_section_hook
oasys_set_section_contents): Check bfd_alloc.
(oasys_slurp_section_data): Check bfd_zalloc and bfd_alloc.
(oasys_make_empty_symbol): Check bfd_zalloc.
* nlmcode.h (nlm_make_empty_symbol): Check bfd_zalloc.
(nlm_slurp_symbol_table): Check bfd_zalloc and bfd_alloc.
* nlm32-sparc.c (nlm_sparc_read_import): Check bfd_alloc.
* nlm32-i386.c (nlm_i386_read_import): Check bfd_alloc.
* nlm32-alpha.c (nlm_alpha_read_import): Check bfd_alloc.
* linker.c (_bfd_link_hash_newfunc
(generic_link_hash_newfunc
(archive_hash_newfunc
(_bfd_generic_link_add_one_symbol): Check bfd_hash_allocate.
(_bfd_generic_final_link
(_bfd_generic_link_output_symbols
(default_indirect_link_order): Check bfd_alloc.
(bfd_new_link_order): Check bfd_alloc_by_size_t.
* irix-core.c (irix_core_make_empty_symbol): Check bfd_zalloc.
* ieee.c: Indent.
(read_id get_symbol get_section_entry ieee_archive_p ieee_object_p
ieee_slurp_section_data ieee_new_section_hook): Check bfd_alloc.
(do_one): Check bfd_alloc. Return a boolean.
(ieee_slurp_section_data): Check it.
(init_for_output): Check bfd_alloc. Return a boolean.
(ieee_set_section_contents): Check it.
(do_with_relocs): Check bfd_alloc. Return a boolean.
(ieee_bfd_debug_info_accumulate): Ditto. FIXME void.
(ieee_mkobject): Check bfd_zalloc.
(ieee_make_empty_symbol): Check bfd_zmalloc.
* hpux-core.c (hpux_core_make_empty_symbol): Check
bfd_zalloc.
* hppabsd-core.c (hppabsd_core_make_empty_symbol): Check
bfd_zalloc.
(hppabsd_core_core_file_p): Check bfd_zalloc.
* hp300hpux.c (MY(slurp_symbol_table)): Check bfd_alloc.
* elfcode.h (elf_new_section_hook): Check bfd_alloc.
(bfd_section_from_phdr): Ditto.
(write_relocs): Ditto. FIXME void
(elf_map_symbols assign_section_numbers map_program_segments):
Ditto. Return a boolean.
(swap_out_syms): Ditto. Check elf_map_symbols.
(elf_slurp_symbol_table): Check bfd_zalloc.
(elf_slurp_reloca_table): Check bfd_alloc.
(elf_slurp_reloc_table): Ditto.
(elf_compute_section_file_positions): Check assign_section_numbers.
(assign_file_positions_except_relocs): Return a boolean.
Check map_program_segments.
(elf_compute_section_file_positions): Check it.
* elf32-mips.c (mips_elf_final_link): Check bfd_alloc.
* elf32-hppa.c (hppa_elf_stub_branch_reloc): Check bfd_zmalloc and
realloc.
(hppa_elf_stub_reloc): Ditto.
(hppa_elf_build_arg_reloc_stub): Check bfd_zalloc.
(hppa_elf_build_long_branch_stub): Ditto.
(elf32_hppa_backend_symbol_table_processing): Ditto.
* ecoff.c (ecoff_set_symbol_info): Check bfd_alloc. Return a boolean.
(ecoff_slurp_symbol_table): Check it.
(ecoff_slurp_armap): Check bfd_alloc.
(ecoff_write_armap): Check bfd_zalloc.
(ecoff_link_hash_newfunc): Check bfd_hash_allocate and
_bfd_link_hash_newfunc.
(ecoff_link_add_externals): Check bfd_alloc.
* ctor.c (bfd_constructor_entry): Check bfd_alloc.
* coffgen.c (coff_real_object_p): Check bfd_alloc.
(coff_renumber_symbols): Check bfd_alloc_by_size_t. Return a boolean.
(coff_write_symbol): Check bfd_alloc. FIXME int
(coff_write_linenumbers): Check bfd_alloc. Return a boolean.
(coff_section_symbol): Check bfd_alloc_by_size_t.
(coff_get_normalized_symtab): Check bfd_alloc.
(coff_bfd_make_debug_symbol): Check bfd_zalloc.
* libcoff-in.h: Change decls of coff_renumber_symbols,
coff_write_linenumbers.
* libcoff.h: Rebuilt.
* coffcode.h (coff_write_object_contents): Check
coff_renumber_symbols, coff_write_linenumbers.
* coffcode.h: Indent.
(coff_add_missing_symbols): Check bfd_alloc_by_size_t. Return a
boolean.
(coff_write_object_contents): Check it.
* coff-alpha.c (alpha_relocate_section): Check bfd_alloc.
* coff-mips.c (mips_relocate_section): Ditto.
* archive.c (bfd_slurp_bsd_armap_f2): Check bfd_alloc value.
(do_slurp_bsd_armap): Ditto.
(compute_and_write_armap): Check bfd_realloc value.
* aoutx.h (translate_from_native_sym_flags): Check bfd_alloc
return value. Return boolean value.
(NAME(aout,make_empty_symbol)): Check bfd_zalloc return value.
(NAME(aout,slurp_symbol_table)): Check bf_alloc and bfd_zalloc
return value.
(add_to_stringtab): Ditto. FIXME void
(aout_link_hash_newfunc): Check bfd_hash_allocate return value.
(aout_link_add_symbols): Check bfd_alloc value.
(translate_symbol_table): Check translate_from_native_sym_flags.
* hp300hpux.c (MY(slurp_symbol_table)): Ditto.
* aoutx.h (aout_link_hash_newfunc): Check _bfd_link_hash_newfunc.
* opncls.c (bfd_zalloc bfd_realloc): Check result of bfd_alloc.
* opncls.c (obstack_chunk_alloc): Define as malloc, not
bfd_xmalloc_by_size_t.
(_bfd_new_bfd): Check obstack_begin for 0 return.
* ieee.c (obstack_chunk_alloc): Define as malloc, not
bfd_xmalloc_by_size_t.
(ieee_archive_p): Check obstack_begin for 0 return and
obstack_finish for NULL return.
* hash.c (obstack_chunk_alloc): Define as malloc, not
bfd_xmalloc_by_size_t.
(bfd_hash_table_init_n): Check obstack_begin for 0 return and
obstack_finish for NULL return.
(bfd_hash_lookup): Check obstack_alloc for NULL return.
* ecofflink.c (obstack_chunk_alloc): Define as malloc, not
bfd_xmalloc_by_size_t.
bfd_ecoff_debug_accumulate
bfd_ecoff_debug_accumulate_other): Check obstack_alloc.
(add_file_shuffle add_memory_shuffle): Check obstack_alloc for
NULL return. Return boolean, not void.
(bfd_ecoff_debug_init): Check obstack_begin for 0 return.
(bfd_ecoff_debug_accumulate): Check add_file_shuffle
and add_memory_shuffle return.
(string_hash_newfunc): Check bfd_hash_allocate and bfd_hash_newfunc.
(bfd_ecoff_debug_accumulate): Check bfd_alloc.
(ecoff_add_string): Check add_memory_shuffle return.
* libbfd-in.h (xmalloc, bfd_xmalloc, bfd_xmalloc_by_size_t):
Remove decls.
* libbfd.h: Rebuilt.
1994-02-12 01:45:54 +01:00
|
|
|
|
{
|
1995-01-15 23:04:02 +01:00
|
|
|
|
bfd_set_error (bfd_error_no_memory);
|
1997-03-18 01:47:04 +01:00
|
|
|
|
return NULL;
|
Make all callers of malloc or realloc (including via obstacks)
check the result for NULL. Most set bfd_error to no_memory and
return in that case; a few are harder to fix, and are marked
with "FIXME <return type>".
* elf32-hppa.c (hppa_elf_build_arg_reloc_stub
hppa_elf_build_long_branch_stub): Check bfd_make_empty_symbol return.
* linker.c (_bfd_generic_link_output_symbols
_bfd_generic_link_write_global_symbol): Ditto
* section.c (bfd_make_section_anyway): Ditto.
* tekhex.c (find_chunk tekhex_mkobject): Check bfd_alloc.
(first_phase): Ditto. FIXME void
(tekhex_make_empty_symbol): Check bfd_zalloc.
* sunos.c (sunos_read_dynamic_info): Check bfd_zalloc.
(MY(read_dynamic_symbols) MY(read_dynamic_relocs)): Check bfd_alloc.
* stringhash.c (_bfd_stringtab_hash_newfunc): Check bfd_hash_allocate.
* srec.c: Indent.
(fillup_symbols): Check bfd_alloc. FIXME void
(srec_mkobject srec_get_section_contents
srec_set_section_contents): Check bfd_alloc.
(srec_make_empty_symbol): Check bfd_zalloc.
* som.c (hppa_som_gen_reloc_type): Check bfd_alloc_by_size_t.
(make_unique_section): Check bfd_alloc.
(som_new_section_hook): Check bfd_zalloc.
(bfd_som_attach_aux_hdr): Ditto. FIXME void
* rs6000-core.c (rs6000coff_core_p): Check bfd_zalloc.
* osf-core.c (osf_core_make_empty_symbol): Check bfd_zalloc.
(osf_core_core_file_p): Check bfd_alloc.
* oasys.c (oasys_slurp_symbol_table oasys_archive_p
oasys_mkobject oasys_object_p oasys_new_section_hook
oasys_set_section_contents): Check bfd_alloc.
(oasys_slurp_section_data): Check bfd_zalloc and bfd_alloc.
(oasys_make_empty_symbol): Check bfd_zalloc.
* nlmcode.h (nlm_make_empty_symbol): Check bfd_zalloc.
(nlm_slurp_symbol_table): Check bfd_zalloc and bfd_alloc.
* nlm32-sparc.c (nlm_sparc_read_import): Check bfd_alloc.
* nlm32-i386.c (nlm_i386_read_import): Check bfd_alloc.
* nlm32-alpha.c (nlm_alpha_read_import): Check bfd_alloc.
* linker.c (_bfd_link_hash_newfunc
(generic_link_hash_newfunc
(archive_hash_newfunc
(_bfd_generic_link_add_one_symbol): Check bfd_hash_allocate.
(_bfd_generic_final_link
(_bfd_generic_link_output_symbols
(default_indirect_link_order): Check bfd_alloc.
(bfd_new_link_order): Check bfd_alloc_by_size_t.
* irix-core.c (irix_core_make_empty_symbol): Check bfd_zalloc.
* ieee.c: Indent.
(read_id get_symbol get_section_entry ieee_archive_p ieee_object_p
ieee_slurp_section_data ieee_new_section_hook): Check bfd_alloc.
(do_one): Check bfd_alloc. Return a boolean.
(ieee_slurp_section_data): Check it.
(init_for_output): Check bfd_alloc. Return a boolean.
(ieee_set_section_contents): Check it.
(do_with_relocs): Check bfd_alloc. Return a boolean.
(ieee_bfd_debug_info_accumulate): Ditto. FIXME void.
(ieee_mkobject): Check bfd_zalloc.
(ieee_make_empty_symbol): Check bfd_zmalloc.
* hpux-core.c (hpux_core_make_empty_symbol): Check
bfd_zalloc.
* hppabsd-core.c (hppabsd_core_make_empty_symbol): Check
bfd_zalloc.
(hppabsd_core_core_file_p): Check bfd_zalloc.
* hp300hpux.c (MY(slurp_symbol_table)): Check bfd_alloc.
* elfcode.h (elf_new_section_hook): Check bfd_alloc.
(bfd_section_from_phdr): Ditto.
(write_relocs): Ditto. FIXME void
(elf_map_symbols assign_section_numbers map_program_segments):
Ditto. Return a boolean.
(swap_out_syms): Ditto. Check elf_map_symbols.
(elf_slurp_symbol_table): Check bfd_zalloc.
(elf_slurp_reloca_table): Check bfd_alloc.
(elf_slurp_reloc_table): Ditto.
(elf_compute_section_file_positions): Check assign_section_numbers.
(assign_file_positions_except_relocs): Return a boolean.
Check map_program_segments.
(elf_compute_section_file_positions): Check it.
* elf32-mips.c (mips_elf_final_link): Check bfd_alloc.
* elf32-hppa.c (hppa_elf_stub_branch_reloc): Check bfd_zmalloc and
realloc.
(hppa_elf_stub_reloc): Ditto.
(hppa_elf_build_arg_reloc_stub): Check bfd_zalloc.
(hppa_elf_build_long_branch_stub): Ditto.
(elf32_hppa_backend_symbol_table_processing): Ditto.
* ecoff.c (ecoff_set_symbol_info): Check bfd_alloc. Return a boolean.
(ecoff_slurp_symbol_table): Check it.
(ecoff_slurp_armap): Check bfd_alloc.
(ecoff_write_armap): Check bfd_zalloc.
(ecoff_link_hash_newfunc): Check bfd_hash_allocate and
_bfd_link_hash_newfunc.
(ecoff_link_add_externals): Check bfd_alloc.
* ctor.c (bfd_constructor_entry): Check bfd_alloc.
* coffgen.c (coff_real_object_p): Check bfd_alloc.
(coff_renumber_symbols): Check bfd_alloc_by_size_t. Return a boolean.
(coff_write_symbol): Check bfd_alloc. FIXME int
(coff_write_linenumbers): Check bfd_alloc. Return a boolean.
(coff_section_symbol): Check bfd_alloc_by_size_t.
(coff_get_normalized_symtab): Check bfd_alloc.
(coff_bfd_make_debug_symbol): Check bfd_zalloc.
* libcoff-in.h: Change decls of coff_renumber_symbols,
coff_write_linenumbers.
* libcoff.h: Rebuilt.
* coffcode.h (coff_write_object_contents): Check
coff_renumber_symbols, coff_write_linenumbers.
* coffcode.h: Indent.
(coff_add_missing_symbols): Check bfd_alloc_by_size_t. Return a
boolean.
(coff_write_object_contents): Check it.
* coff-alpha.c (alpha_relocate_section): Check bfd_alloc.
* coff-mips.c (mips_relocate_section): Ditto.
* archive.c (bfd_slurp_bsd_armap_f2): Check bfd_alloc value.
(do_slurp_bsd_armap): Ditto.
(compute_and_write_armap): Check bfd_realloc value.
* aoutx.h (translate_from_native_sym_flags): Check bfd_alloc
return value. Return boolean value.
(NAME(aout,make_empty_symbol)): Check bfd_zalloc return value.
(NAME(aout,slurp_symbol_table)): Check bf_alloc and bfd_zalloc
return value.
(add_to_stringtab): Ditto. FIXME void
(aout_link_hash_newfunc): Check bfd_hash_allocate return value.
(aout_link_add_symbols): Check bfd_alloc value.
(translate_symbol_table): Check translate_from_native_sym_flags.
* hp300hpux.c (MY(slurp_symbol_table)): Ditto.
* aoutx.h (aout_link_hash_newfunc): Check _bfd_link_hash_newfunc.
* opncls.c (bfd_zalloc bfd_realloc): Check result of bfd_alloc.
* opncls.c (obstack_chunk_alloc): Define as malloc, not
bfd_xmalloc_by_size_t.
(_bfd_new_bfd): Check obstack_begin for 0 return.
* ieee.c (obstack_chunk_alloc): Define as malloc, not
bfd_xmalloc_by_size_t.
(ieee_archive_p): Check obstack_begin for 0 return and
obstack_finish for NULL return.
* hash.c (obstack_chunk_alloc): Define as malloc, not
bfd_xmalloc_by_size_t.
(bfd_hash_table_init_n): Check obstack_begin for 0 return and
obstack_finish for NULL return.
(bfd_hash_lookup): Check obstack_alloc for NULL return.
* ecofflink.c (obstack_chunk_alloc): Define as malloc, not
bfd_xmalloc_by_size_t.
bfd_ecoff_debug_accumulate
bfd_ecoff_debug_accumulate_other): Check obstack_alloc.
(add_file_shuffle add_memory_shuffle): Check obstack_alloc for
NULL return. Return boolean, not void.
(bfd_ecoff_debug_init): Check obstack_begin for 0 return.
(bfd_ecoff_debug_accumulate): Check add_file_shuffle
and add_memory_shuffle return.
(string_hash_newfunc): Check bfd_hash_allocate and bfd_hash_newfunc.
(bfd_ecoff_debug_accumulate): Check bfd_alloc.
(ecoff_add_string): Check add_memory_shuffle return.
* libbfd-in.h (xmalloc, bfd_xmalloc, bfd_xmalloc_by_size_t):
Remove decls.
* libbfd.h: Rebuilt.
1994-02-12 01:45:54 +01:00
|
|
|
|
}
|
1991-11-12 03:46:26 +01:00
|
|
|
|
|
|
|
|
|
nbfd->arch_info = &bfd_default_arch_struct;
|
|
|
|
|
|
1991-03-21 22:11:25 +01:00
|
|
|
|
nbfd->direction = no_direction;
|
|
|
|
|
nbfd->iostream = NULL;
|
|
|
|
|
nbfd->where = 0;
|
1997-03-18 01:47:04 +01:00
|
|
|
|
nbfd->sections = (asection *) NULL;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
nbfd->format = bfd_unknown;
|
1997-03-18 01:47:04 +01:00
|
|
|
|
nbfd->my_archive = (bfd *) NULL;
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
nbfd->origin = 0;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
nbfd->opened_once = false;
|
|
|
|
|
nbfd->output_has_begun = false;
|
|
|
|
|
nbfd->section_count = 0;
|
1997-03-18 01:47:04 +01:00
|
|
|
|
nbfd->usrdata = (PTR) NULL;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
nbfd->cacheable = false;
|
1996-08-08 08:27:01 +02:00
|
|
|
|
nbfd->flags = BFD_NO_FLAGS;
|
1992-05-02 03:43:21 +02:00
|
|
|
|
nbfd->mtime_set = false;
|
|
|
|
|
|
1991-03-21 22:11:25 +01:00
|
|
|
|
return nbfd;
|
|
|
|
|
}
|
1991-05-02 06:11:40 +02:00
|
|
|
|
|
|
|
|
|
/* Allocate a new BFD as a member of archive OBFD. */
|
|
|
|
|
|
1993-11-04 23:49:47 +01:00
|
|
|
|
bfd *
|
* opncls.c (_bfd_new_bfd, _bfd_new_bfd_contained_in): Add
"_bfd_" to function names.
* archive.c (_bfd_create_empty_archive_element_shell),
libbfd-in.h: Change callers.
* libbfd.c (bfd_zmalloc): Renamed from zalloc.
* libbfd.c (bfd_add_to_string_table),
trad-core.c (trad_unix_core_file_p),
targets.c (bfd_target_list),
ptrace-core.c (ptrace_unix_core_file_p),
opncls.c (new_bfd), libbfd-in.h,
ieee.c (ieee_make_empty_symbol),
elf32-hppa.c (hppa_elf_stub_branch_reloc),
(hppa_elf_stub_reloc): Change callers.
* libbfd.h: Regenerated.
* archive.c (_bfd_look_for_bfd_in_cache): Add "_bfd_" to name.
(_bfd_get_elt_at_filepos),
coff-rs6000.c (rs6000coff_get_elt_at_filepos), libbfd-in.h:
Change callers.
* format.c (bfd_check_format_matches), libbfd-in.h, targets.c,
elfcode.h (elf_object_p): Rename target_vector to bfd_target_vector
and default_vector to bfd_default_vector.
* libbfd.h: Regenerated.
1994-01-25 14:25:26 +01:00
|
|
|
|
_bfd_new_bfd_contained_in (obfd)
|
1993-11-04 23:49:47 +01:00
|
|
|
|
bfd *obfd;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
{
|
1993-11-04 23:49:47 +01:00
|
|
|
|
bfd *nbfd;
|
|
|
|
|
|
1997-03-18 01:47:04 +01:00
|
|
|
|
nbfd = _bfd_new_bfd ();
|
1993-11-04 23:49:47 +01:00
|
|
|
|
nbfd->xvec = obfd->xvec;
|
|
|
|
|
nbfd->my_archive = obfd;
|
|
|
|
|
nbfd->direction = read_direction;
|
|
|
|
|
nbfd->target_defaulted = obfd->target_defaulted;
|
|
|
|
|
return nbfd;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
}
|
|
|
|
|
|
1991-12-12 01:42:50 +01:00
|
|
|
|
/*
|
|
|
|
|
SECTION
|
* opncls.c (_bfd_new_bfd, _bfd_new_bfd_contained_in): Add
"_bfd_" to function names.
* archive.c (_bfd_create_empty_archive_element_shell),
libbfd-in.h: Change callers.
* libbfd.c (bfd_zmalloc): Renamed from zalloc.
* libbfd.c (bfd_add_to_string_table),
trad-core.c (trad_unix_core_file_p),
targets.c (bfd_target_list),
ptrace-core.c (ptrace_unix_core_file_p),
opncls.c (new_bfd), libbfd-in.h,
ieee.c (ieee_make_empty_symbol),
elf32-hppa.c (hppa_elf_stub_branch_reloc),
(hppa_elf_stub_reloc): Change callers.
* libbfd.h: Regenerated.
* archive.c (_bfd_look_for_bfd_in_cache): Add "_bfd_" to name.
(_bfd_get_elt_at_filepos),
coff-rs6000.c (rs6000coff_get_elt_at_filepos), libbfd-in.h:
Change callers.
* format.c (bfd_check_format_matches), libbfd-in.h, targets.c,
elfcode.h (elf_object_p): Rename target_vector to bfd_target_vector
and default_vector to bfd_default_vector.
* libbfd.h: Regenerated.
1994-01-25 14:25:26 +01:00
|
|
|
|
Opening and closing BFDs
|
1991-07-04 18:52:56 +02:00
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
1991-12-12 01:42:50 +01:00
|
|
|
|
/*
|
|
|
|
|
FUNCTION
|
|
|
|
|
bfd_openr
|
|
|
|
|
|
|
|
|
|
SYNOPSIS
|
1993-11-05 20:51:52 +01:00
|
|
|
|
bfd *bfd_openr(CONST char *filename, CONST char *target);
|
1991-12-12 01:42:50 +01:00
|
|
|
|
|
|
|
|
|
DESCRIPTION
|
1993-11-05 20:51:52 +01:00
|
|
|
|
Open the file @var{filename} (using <<fopen>>) with the target
|
|
|
|
|
@var{target}. Return a pointer to the created BFD.
|
1991-12-12 01:42:50 +01:00
|
|
|
|
|
1993-11-05 20:51:52 +01:00
|
|
|
|
Calls <<bfd_find_target>>, so @var{target} is interpreted as by
|
|
|
|
|
that function.
|
* opncls.c (_bfd_new_bfd, _bfd_new_bfd_contained_in): Add
"_bfd_" to function names.
* archive.c (_bfd_create_empty_archive_element_shell),
libbfd-in.h: Change callers.
* libbfd.c (bfd_zmalloc): Renamed from zalloc.
* libbfd.c (bfd_add_to_string_table),
trad-core.c (trad_unix_core_file_p),
targets.c (bfd_target_list),
ptrace-core.c (ptrace_unix_core_file_p),
opncls.c (new_bfd), libbfd-in.h,
ieee.c (ieee_make_empty_symbol),
elf32-hppa.c (hppa_elf_stub_branch_reloc),
(hppa_elf_stub_reloc): Change callers.
* libbfd.h: Regenerated.
* archive.c (_bfd_look_for_bfd_in_cache): Add "_bfd_" to name.
(_bfd_get_elt_at_filepos),
coff-rs6000.c (rs6000coff_get_elt_at_filepos), libbfd-in.h:
Change callers.
* format.c (bfd_check_format_matches), libbfd-in.h, targets.c,
elfcode.h (elf_object_p): Rename target_vector to bfd_target_vector
and default_vector to bfd_default_vector.
* libbfd.h: Regenerated.
1994-01-25 14:25:26 +01:00
|
|
|
|
|
|
|
|
|
If <<NULL>> is returned then an error has occured. Possible errors
|
1995-01-15 23:04:02 +01:00
|
|
|
|
are <<bfd_error_no_memory>>, <<bfd_error_invalid_target>> or <<system_call>> error.
|
1991-12-12 01:42:50 +01:00
|
|
|
|
*/
|
1991-03-21 22:11:25 +01:00
|
|
|
|
|
|
|
|
|
bfd *
|
* opncls.c (_bfd_new_bfd, _bfd_new_bfd_contained_in): Add
"_bfd_" to function names.
* archive.c (_bfd_create_empty_archive_element_shell),
libbfd-in.h: Change callers.
* libbfd.c (bfd_zmalloc): Renamed from zalloc.
* libbfd.c (bfd_add_to_string_table),
trad-core.c (trad_unix_core_file_p),
targets.c (bfd_target_list),
ptrace-core.c (ptrace_unix_core_file_p),
opncls.c (new_bfd), libbfd-in.h,
ieee.c (ieee_make_empty_symbol),
elf32-hppa.c (hppa_elf_stub_branch_reloc),
(hppa_elf_stub_reloc): Change callers.
* libbfd.h: Regenerated.
* archive.c (_bfd_look_for_bfd_in_cache): Add "_bfd_" to name.
(_bfd_get_elt_at_filepos),
coff-rs6000.c (rs6000coff_get_elt_at_filepos), libbfd-in.h:
Change callers.
* format.c (bfd_check_format_matches), libbfd-in.h, targets.c,
elfcode.h (elf_object_p): Rename target_vector to bfd_target_vector
and default_vector to bfd_default_vector.
* libbfd.h: Regenerated.
1994-01-25 14:25:26 +01:00
|
|
|
|
bfd_openr (filename, target)
|
|
|
|
|
CONST char *filename;
|
|
|
|
|
CONST char *target;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
{
|
|
|
|
|
bfd *nbfd;
|
1995-01-15 23:04:02 +01:00
|
|
|
|
const bfd_target *target_vec;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
|
1997-03-18 01:47:04 +01:00
|
|
|
|
nbfd = _bfd_new_bfd ();
|
Tue Jan 9 15:22:53 1996 David Mosberger-Tang <davidm@azstarnet.com>
* coff-alpha.c (alpha_relocate_section): During final link, allow
output .lita section to be bigger than 64k by adjusting gp value
on a per-input section basis.
* libecoff.h (struct ecoff_tdata): Add issued_multiple_gp_warning
field.
(struct ecoff_section_tdata): Add gp field.
Tue Jan 9 12:00:36 1996 Ian Lance Taylor <ian@cygnus.com>
Handle Alpha ECOFF changes in OSF/1 3.2.
* libecoff.h (struct ecoff_backend_data): Add get_elt_at_filepos
field.
* coff-alpha.c: Include "aout/ar.h".
(alpha_ecoff_get_relocated_section_contents): Don't require an
ALPHA_R_IGNORE reloc after an ALPHA_R_GPDISP reloc, since OSF/1
3.2 doesn't generate one.
(alpha_relocate_section): Likewise.
(alpha_ecoff_slurp_armap): Define.
(alpha_ecoff_slurp_extended_name_table): Define.
(alpha_ecoff_construct_extended_name_table): Define.
(alpha_ecoff_truncate_arname): Define.
(alpha_ecoff_write_armap): Define.
(alpha_ecoff_generic_stat_arch_elt): Define.
(alpha_ecoff_update_armap_timestamp): Define.
(ARFZMAG): Define.
(alpha_ecoff_read_ar_hdr): New static function.
(alpha_ecoff_get_elt_at_filepos): New static function.
(alpha_ecoff_openr_next_archived_file): New static function.
(alpha_ecoff_get_elt_at_index): New static function.
(alpha_ecoff_backend_data): Initialize get_elt_at_filepos field.
(ecoffalpha_little_vec): Change BFD_JUMP_TABLE_ARCHIVE from
_bfd_ecoff to alpha_ecoff.
* ecoff.c (ecoff_link_add_archive_symbols): Use get_elt_at_filepos
field from backend structure, rather than always calling
_bfd_get_elt_at_filepos.
* coff-mips.c (mips_ecoff_backend_data): Initialize
get_elt_at_filepos field.
* archive.c (_bfd_generic_read_ar_hdr_mag): New function, copied
from _bfd_generic_read_ar_hdr with minor changes.
(_bfd_generic_read_ar_hdr): Use _bfd_generic_read_ar_hdr_mag.
* libbfd-in.h (_bfd_generic_read_ar_hdr_mag): Declare.
* libbfd.h: Rebuild.
* bfd-in.h (BFD_IN_MEMORY): Define.
* libbfd-in.h (struct bfd_in_memory): Define.
* libbfd.c (bfd_read): Handle BFD_IN_MEMORY flag.
(bfd_get_file_window): Don't try to map a BFD_IN_MEMORY file.
(bfd_write, bfd_stat): Abort if BFD_IN_MEMORY is set.
(bfd_tell, bfd_flush, bfd_seek): Handle BFD_IN_MEMORY flag.
* bfd.c (struct _bfd): Change iostream field from char * to PTR.
(bfd_get_size): Handle BFD_IN_MEMORY flag.
* cache.c (bfd_cache_close): Ignore BFD_IN_MEMORY files.
(bfd_open_file): Cast to PTR, not char *, when setting iostream.
(bfd_cache_lookup_worker): Abort if BFD_IN_MEMORY is set.
* opncls.c (bfd_fdopenr): Cast to PTR, not char *, when setting
iostream.
(bfd_openstreamr): Likewise.
* aoutx.h (NAME(aout,some_aout_object_p)): Only fstat iostream if
BFD_IN_MEMORY is not set.
* riscix.c (riscix_some_aout_object_p): Likewise.
* bfd-in2.h, libbfd.h: Rebuild.
* targets.c (bfd_target): Add _bfd_get_elt_at_index field.
(BFD_JUMP_TABLE_ARCHIVE): Add _get_elt_at_index.
(bfd_get_elt_at_index): Define.
* archive.c (_bfd_generic_get_elt_at_index): Rename from
bfd_get_elt_at_index. Change index parameter from int to
symindex.
* libbfd-in.h (_bfd_generic_get_elt_at_index): Declare.
(_bfd_noarchive_get_elt_at_index): Define.
(_bfd_archive_bsd_get_elt_at_index): Define.
(_bfd_archive_coff_get_elt_at_index): Define.
* bfd-in2.h, libbfd.h: Rebuild.
* aout-target.h (MY_get_elt_at_index): Define if not defined.
* coff-rs6000.c (xcoff_get_elt_at_index): Define.
* ieee.c (ieee_get_elt_at_index): Define.
* libecoff.h (_bfd_ecoff_get_elt_at_index): Define.
* oasys.c (oasys_get_elt_at_index): Define.
* som.c (som_get_elt_at_index): Define.
1996-01-09 21:40:39 +01:00
|
|
|
|
if (nbfd == NULL)
|
1991-03-21 22:11:25 +01:00
|
|
|
|
return NULL;
|
|
|
|
|
|
1991-05-29 02:20:02 +02:00
|
|
|
|
target_vec = bfd_find_target (target, nbfd);
|
1997-03-18 01:47:04 +01:00
|
|
|
|
if (target_vec == NULL)
|
|
|
|
|
{
|
|
|
|
|
objalloc_free ((struct objalloc *) nbfd->memory);
|
|
|
|
|
free (nbfd);
|
|
|
|
|
bfd_set_error (bfd_error_invalid_target);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
1991-05-29 02:20:02 +02:00
|
|
|
|
|
1991-03-21 22:11:25 +01:00
|
|
|
|
nbfd->filename = filename;
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
nbfd->direction = read_direction;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
|
1997-03-18 01:47:04 +01:00
|
|
|
|
if (bfd_open_file (nbfd) == NULL)
|
|
|
|
|
{
|
|
|
|
|
/* File didn't exist, or some such */
|
|
|
|
|
bfd_set_error (bfd_error_system_call);
|
|
|
|
|
objalloc_free ((struct objalloc *) nbfd->memory);
|
|
|
|
|
free (nbfd);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
1991-03-21 22:11:25 +01:00
|
|
|
|
return nbfd;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Don't try to `optimize' this function:
|
|
|
|
|
|
|
|
|
|
o - We lock using stack space so that interrupting the locking
|
|
|
|
|
won't cause a storage leak.
|
|
|
|
|
o - We open the file stream last, since we don't want to have to
|
|
|
|
|
close it if anything goes wrong. Closing the stream means closing
|
|
|
|
|
the file descriptor too, even though we didn't open it.
|
|
|
|
|
*/
|
1991-12-12 01:42:50 +01:00
|
|
|
|
/*
|
|
|
|
|
FUNCTION
|
|
|
|
|
bfd_fdopenr
|
1991-07-04 18:52:56 +02:00
|
|
|
|
|
1991-12-12 01:42:50 +01:00
|
|
|
|
SYNOPSIS
|
|
|
|
|
bfd *bfd_fdopenr(CONST char *filename, CONST char *target, int fd);
|
|
|
|
|
|
|
|
|
|
DESCRIPTION
|
1993-11-05 20:51:52 +01:00
|
|
|
|
<<bfd_fdopenr>> is to <<bfd_fopenr>> much like <<fdopen>> is to <<fopen>>.
|
1991-12-12 01:42:50 +01:00
|
|
|
|
It opens a BFD on a file already described by the @var{fd}
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
supplied.
|
|
|
|
|
|
1993-11-05 20:51:52 +01:00
|
|
|
|
When the file is later <<bfd_close>>d, the file descriptor will be closed.
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
|
|
|
|
|
If the caller desires that this file descriptor be cached by BFD
|
|
|
|
|
(opened as needed, closed as needed to free descriptors for
|
|
|
|
|
other opens), with the supplied @var{fd} used as an initial
|
1993-11-04 23:49:47 +01:00
|
|
|
|
file descriptor (but subject to closure at any time), call
|
|
|
|
|
bfd_set_cacheable(bfd, 1) on the returned BFD. The default is to
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
assume no cacheing; the file descriptor will remain open until
|
1993-11-05 20:51:52 +01:00
|
|
|
|
<<bfd_close>>, and will not be affected by BFD operations on other
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
files.
|
1991-12-12 01:42:50 +01:00
|
|
|
|
|
1995-01-15 23:04:02 +01:00
|
|
|
|
Possible errors are <<bfd_error_no_memory>>, <<bfd_error_invalid_target>> and <<bfd_error_system_call>>.
|
1991-12-12 01:42:50 +01:00
|
|
|
|
*/
|
1991-03-21 22:11:25 +01:00
|
|
|
|
|
|
|
|
|
bfd *
|
* opncls.c (_bfd_new_bfd, _bfd_new_bfd_contained_in): Add
"_bfd_" to function names.
* archive.c (_bfd_create_empty_archive_element_shell),
libbfd-in.h: Change callers.
* libbfd.c (bfd_zmalloc): Renamed from zalloc.
* libbfd.c (bfd_add_to_string_table),
trad-core.c (trad_unix_core_file_p),
targets.c (bfd_target_list),
ptrace-core.c (ptrace_unix_core_file_p),
opncls.c (new_bfd), libbfd-in.h,
ieee.c (ieee_make_empty_symbol),
elf32-hppa.c (hppa_elf_stub_branch_reloc),
(hppa_elf_stub_reloc): Change callers.
* libbfd.h: Regenerated.
* archive.c (_bfd_look_for_bfd_in_cache): Add "_bfd_" to name.
(_bfd_get_elt_at_filepos),
coff-rs6000.c (rs6000coff_get_elt_at_filepos), libbfd-in.h:
Change callers.
* format.c (bfd_check_format_matches), libbfd-in.h, targets.c,
elfcode.h (elf_object_p): Rename target_vector to bfd_target_vector
and default_vector to bfd_default_vector.
* libbfd.h: Regenerated.
1994-01-25 14:25:26 +01:00
|
|
|
|
bfd_fdopenr (filename, target, fd)
|
|
|
|
|
CONST char *filename;
|
|
|
|
|
CONST char *target;
|
|
|
|
|
int fd;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
{
|
|
|
|
|
bfd *nbfd;
|
1995-01-15 23:04:02 +01:00
|
|
|
|
const bfd_target *target_vec;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
int fdflags;
|
|
|
|
|
|
1995-01-15 23:04:02 +01:00
|
|
|
|
bfd_set_error (bfd_error_system_call);
|
* configure.in: Call AC_CONFIG_HEADER. Substitute
HOST_64BIT_LONG. Check that various header files exist. Check
that fcntl exists. Call BFD_BINARY_FOPEN. Check whether malloc
and/or free need to be declared. Don't make a link to sysdep.h.
Define TRAD_HEADER for various hosts.
* configure: Rebuild.
* configure.host: Don't set my_host. Add definitions taken from
host header files for various entries. Remove entries which now
do nothing.
* acconfig.h: New file.
* config.h.in: New file, built by autoheader.
* sysdep.h: New file.
* Makefile.in (do_distclean): Don't remove sysdep.h.
(RECONFIG): Remove.
(LOCAL_H_DEPS): New variable.
($(BFD_LIBS)): Use $(LOCAL_H_DEPS) rather than libbfd.h and
$(RECONFIG).
($(BFD_MACHINES), $(BFD_BACKENDS)): Likewise.
($(OPTIONAL_BACKENDS)): Likewise.
(stmp-bfd.h): Just substitute for BFD_HOST_64BIT_LONG, rather than
looking through sysdep.h.
* bfd-in.h (BFD_HOST_64BIT_LONG): Define; set by Makefile.
(BFD_HOST_64_BIT): Define based on BFD_HOST_64BIT_LONG.
(fprintf_vma, sprintf_vma): Likewise.
(int64_type, uint64_type): Don't define.
* bfd-in2.h: Rebuild.
* archures.c, bfd.c, srec.c: Include <ctype.h>.
* elfcore.h: Check HAVE_SYS_PROCFS_H rather than HAVE_PROCFS.
* lynx-core.c: Include stuff from old hosts/lynx.h.
* opncls.c (bfd_fdopenr): Check HAVE_FNCTL and defined (F_GETFL),
rather than NO_FCNTL.
* targets.c (bfd_target_list): Check HOST_HPPAHPUX and ! __STDC__
rather than NATIVE_HPPAHPUX_COMPILER.
* trad-core.c: Don't include <errno.h>. Include TRAD_HEADER if it
is defined.
* hosts/*.h: Remove all header files which merely include,
declare, and define things. Leave header files which define
information needed by trad-core.c.
1995-09-07 00:53:43 +02:00
|
|
|
|
#if ! defined(HAVE_FCNTL) || ! defined(F_GETFL)
|
1991-09-27 00:28:46 +02:00
|
|
|
|
fdflags = O_RDWR; /* Assume full access */
|
|
|
|
|
#else
|
1991-07-04 18:52:56 +02:00
|
|
|
|
fdflags = fcntl (fd, F_GETFL, NULL);
|
1991-03-21 22:11:25 +01:00
|
|
|
|
#endif
|
1991-09-27 00:28:46 +02:00
|
|
|
|
if (fdflags == -1) return NULL;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
|
1997-03-18 01:47:04 +01:00
|
|
|
|
nbfd = _bfd_new_bfd ();
|
Tue Jan 9 15:22:53 1996 David Mosberger-Tang <davidm@azstarnet.com>
* coff-alpha.c (alpha_relocate_section): During final link, allow
output .lita section to be bigger than 64k by adjusting gp value
on a per-input section basis.
* libecoff.h (struct ecoff_tdata): Add issued_multiple_gp_warning
field.
(struct ecoff_section_tdata): Add gp field.
Tue Jan 9 12:00:36 1996 Ian Lance Taylor <ian@cygnus.com>
Handle Alpha ECOFF changes in OSF/1 3.2.
* libecoff.h (struct ecoff_backend_data): Add get_elt_at_filepos
field.
* coff-alpha.c: Include "aout/ar.h".
(alpha_ecoff_get_relocated_section_contents): Don't require an
ALPHA_R_IGNORE reloc after an ALPHA_R_GPDISP reloc, since OSF/1
3.2 doesn't generate one.
(alpha_relocate_section): Likewise.
(alpha_ecoff_slurp_armap): Define.
(alpha_ecoff_slurp_extended_name_table): Define.
(alpha_ecoff_construct_extended_name_table): Define.
(alpha_ecoff_truncate_arname): Define.
(alpha_ecoff_write_armap): Define.
(alpha_ecoff_generic_stat_arch_elt): Define.
(alpha_ecoff_update_armap_timestamp): Define.
(ARFZMAG): Define.
(alpha_ecoff_read_ar_hdr): New static function.
(alpha_ecoff_get_elt_at_filepos): New static function.
(alpha_ecoff_openr_next_archived_file): New static function.
(alpha_ecoff_get_elt_at_index): New static function.
(alpha_ecoff_backend_data): Initialize get_elt_at_filepos field.
(ecoffalpha_little_vec): Change BFD_JUMP_TABLE_ARCHIVE from
_bfd_ecoff to alpha_ecoff.
* ecoff.c (ecoff_link_add_archive_symbols): Use get_elt_at_filepos
field from backend structure, rather than always calling
_bfd_get_elt_at_filepos.
* coff-mips.c (mips_ecoff_backend_data): Initialize
get_elt_at_filepos field.
* archive.c (_bfd_generic_read_ar_hdr_mag): New function, copied
from _bfd_generic_read_ar_hdr with minor changes.
(_bfd_generic_read_ar_hdr): Use _bfd_generic_read_ar_hdr_mag.
* libbfd-in.h (_bfd_generic_read_ar_hdr_mag): Declare.
* libbfd.h: Rebuild.
* bfd-in.h (BFD_IN_MEMORY): Define.
* libbfd-in.h (struct bfd_in_memory): Define.
* libbfd.c (bfd_read): Handle BFD_IN_MEMORY flag.
(bfd_get_file_window): Don't try to map a BFD_IN_MEMORY file.
(bfd_write, bfd_stat): Abort if BFD_IN_MEMORY is set.
(bfd_tell, bfd_flush, bfd_seek): Handle BFD_IN_MEMORY flag.
* bfd.c (struct _bfd): Change iostream field from char * to PTR.
(bfd_get_size): Handle BFD_IN_MEMORY flag.
* cache.c (bfd_cache_close): Ignore BFD_IN_MEMORY files.
(bfd_open_file): Cast to PTR, not char *, when setting iostream.
(bfd_cache_lookup_worker): Abort if BFD_IN_MEMORY is set.
* opncls.c (bfd_fdopenr): Cast to PTR, not char *, when setting
iostream.
(bfd_openstreamr): Likewise.
* aoutx.h (NAME(aout,some_aout_object_p)): Only fstat iostream if
BFD_IN_MEMORY is not set.
* riscix.c (riscix_some_aout_object_p): Likewise.
* bfd-in2.h, libbfd.h: Rebuild.
* targets.c (bfd_target): Add _bfd_get_elt_at_index field.
(BFD_JUMP_TABLE_ARCHIVE): Add _get_elt_at_index.
(bfd_get_elt_at_index): Define.
* archive.c (_bfd_generic_get_elt_at_index): Rename from
bfd_get_elt_at_index. Change index parameter from int to
symindex.
* libbfd-in.h (_bfd_generic_get_elt_at_index): Declare.
(_bfd_noarchive_get_elt_at_index): Define.
(_bfd_archive_bsd_get_elt_at_index): Define.
(_bfd_archive_coff_get_elt_at_index): Define.
* bfd-in2.h, libbfd.h: Rebuild.
* aout-target.h (MY_get_elt_at_index): Define if not defined.
* coff-rs6000.c (xcoff_get_elt_at_index): Define.
* ieee.c (ieee_get_elt_at_index): Define.
* libecoff.h (_bfd_ecoff_get_elt_at_index): Define.
* oasys.c (oasys_get_elt_at_index): Define.
* som.c (som_get_elt_at_index): Define.
1996-01-09 21:40:39 +01:00
|
|
|
|
if (nbfd == NULL)
|
1991-03-21 22:11:25 +01:00
|
|
|
|
return NULL;
|
1991-05-29 02:20:02 +02:00
|
|
|
|
|
|
|
|
|
target_vec = bfd_find_target (target, nbfd);
|
1997-03-18 01:47:04 +01:00
|
|
|
|
if (target_vec == NULL)
|
|
|
|
|
{
|
|
|
|
|
bfd_set_error (bfd_error_invalid_target);
|
|
|
|
|
objalloc_free ((struct objalloc *) nbfd->memory);
|
|
|
|
|
free (nbfd);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
1997-03-17 17:36:08 +01:00
|
|
|
|
#if defined(VMS) || defined(__GO32__)
|
Tue Jan 9 15:22:53 1996 David Mosberger-Tang <davidm@azstarnet.com>
* coff-alpha.c (alpha_relocate_section): During final link, allow
output .lita section to be bigger than 64k by adjusting gp value
on a per-input section basis.
* libecoff.h (struct ecoff_tdata): Add issued_multiple_gp_warning
field.
(struct ecoff_section_tdata): Add gp field.
Tue Jan 9 12:00:36 1996 Ian Lance Taylor <ian@cygnus.com>
Handle Alpha ECOFF changes in OSF/1 3.2.
* libecoff.h (struct ecoff_backend_data): Add get_elt_at_filepos
field.
* coff-alpha.c: Include "aout/ar.h".
(alpha_ecoff_get_relocated_section_contents): Don't require an
ALPHA_R_IGNORE reloc after an ALPHA_R_GPDISP reloc, since OSF/1
3.2 doesn't generate one.
(alpha_relocate_section): Likewise.
(alpha_ecoff_slurp_armap): Define.
(alpha_ecoff_slurp_extended_name_table): Define.
(alpha_ecoff_construct_extended_name_table): Define.
(alpha_ecoff_truncate_arname): Define.
(alpha_ecoff_write_armap): Define.
(alpha_ecoff_generic_stat_arch_elt): Define.
(alpha_ecoff_update_armap_timestamp): Define.
(ARFZMAG): Define.
(alpha_ecoff_read_ar_hdr): New static function.
(alpha_ecoff_get_elt_at_filepos): New static function.
(alpha_ecoff_openr_next_archived_file): New static function.
(alpha_ecoff_get_elt_at_index): New static function.
(alpha_ecoff_backend_data): Initialize get_elt_at_filepos field.
(ecoffalpha_little_vec): Change BFD_JUMP_TABLE_ARCHIVE from
_bfd_ecoff to alpha_ecoff.
* ecoff.c (ecoff_link_add_archive_symbols): Use get_elt_at_filepos
field from backend structure, rather than always calling
_bfd_get_elt_at_filepos.
* coff-mips.c (mips_ecoff_backend_data): Initialize
get_elt_at_filepos field.
* archive.c (_bfd_generic_read_ar_hdr_mag): New function, copied
from _bfd_generic_read_ar_hdr with minor changes.
(_bfd_generic_read_ar_hdr): Use _bfd_generic_read_ar_hdr_mag.
* libbfd-in.h (_bfd_generic_read_ar_hdr_mag): Declare.
* libbfd.h: Rebuild.
* bfd-in.h (BFD_IN_MEMORY): Define.
* libbfd-in.h (struct bfd_in_memory): Define.
* libbfd.c (bfd_read): Handle BFD_IN_MEMORY flag.
(bfd_get_file_window): Don't try to map a BFD_IN_MEMORY file.
(bfd_write, bfd_stat): Abort if BFD_IN_MEMORY is set.
(bfd_tell, bfd_flush, bfd_seek): Handle BFD_IN_MEMORY flag.
* bfd.c (struct _bfd): Change iostream field from char * to PTR.
(bfd_get_size): Handle BFD_IN_MEMORY flag.
* cache.c (bfd_cache_close): Ignore BFD_IN_MEMORY files.
(bfd_open_file): Cast to PTR, not char *, when setting iostream.
(bfd_cache_lookup_worker): Abort if BFD_IN_MEMORY is set.
* opncls.c (bfd_fdopenr): Cast to PTR, not char *, when setting
iostream.
(bfd_openstreamr): Likewise.
* aoutx.h (NAME(aout,some_aout_object_p)): Only fstat iostream if
BFD_IN_MEMORY is not set.
* riscix.c (riscix_some_aout_object_p): Likewise.
* bfd-in2.h, libbfd.h: Rebuild.
* targets.c (bfd_target): Add _bfd_get_elt_at_index field.
(BFD_JUMP_TABLE_ARCHIVE): Add _get_elt_at_index.
(bfd_get_elt_at_index): Define.
* archive.c (_bfd_generic_get_elt_at_index): Rename from
bfd_get_elt_at_index. Change index parameter from int to
symindex.
* libbfd-in.h (_bfd_generic_get_elt_at_index): Declare.
(_bfd_noarchive_get_elt_at_index): Define.
(_bfd_archive_bsd_get_elt_at_index): Define.
(_bfd_archive_coff_get_elt_at_index): Define.
* bfd-in2.h, libbfd.h: Rebuild.
* aout-target.h (MY_get_elt_at_index): Define if not defined.
* coff-rs6000.c (xcoff_get_elt_at_index): Define.
* ieee.c (ieee_get_elt_at_index): Define.
* libecoff.h (_bfd_ecoff_get_elt_at_index): Define.
* oasys.c (oasys_get_elt_at_index): Define.
* som.c (som_get_elt_at_index): Define.
1996-01-09 21:40:39 +01:00
|
|
|
|
nbfd->iostream = (PTR)fopen(filename, FOPEN_RB);
|
1991-11-12 03:46:26 +01:00
|
|
|
|
#else
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
/* (O_ACCMODE) parens are to avoid Ultrix header file bug */
|
|
|
|
|
switch (fdflags & (O_ACCMODE)) {
|
Tue Jan 9 15:22:53 1996 David Mosberger-Tang <davidm@azstarnet.com>
* coff-alpha.c (alpha_relocate_section): During final link, allow
output .lita section to be bigger than 64k by adjusting gp value
on a per-input section basis.
* libecoff.h (struct ecoff_tdata): Add issued_multiple_gp_warning
field.
(struct ecoff_section_tdata): Add gp field.
Tue Jan 9 12:00:36 1996 Ian Lance Taylor <ian@cygnus.com>
Handle Alpha ECOFF changes in OSF/1 3.2.
* libecoff.h (struct ecoff_backend_data): Add get_elt_at_filepos
field.
* coff-alpha.c: Include "aout/ar.h".
(alpha_ecoff_get_relocated_section_contents): Don't require an
ALPHA_R_IGNORE reloc after an ALPHA_R_GPDISP reloc, since OSF/1
3.2 doesn't generate one.
(alpha_relocate_section): Likewise.
(alpha_ecoff_slurp_armap): Define.
(alpha_ecoff_slurp_extended_name_table): Define.
(alpha_ecoff_construct_extended_name_table): Define.
(alpha_ecoff_truncate_arname): Define.
(alpha_ecoff_write_armap): Define.
(alpha_ecoff_generic_stat_arch_elt): Define.
(alpha_ecoff_update_armap_timestamp): Define.
(ARFZMAG): Define.
(alpha_ecoff_read_ar_hdr): New static function.
(alpha_ecoff_get_elt_at_filepos): New static function.
(alpha_ecoff_openr_next_archived_file): New static function.
(alpha_ecoff_get_elt_at_index): New static function.
(alpha_ecoff_backend_data): Initialize get_elt_at_filepos field.
(ecoffalpha_little_vec): Change BFD_JUMP_TABLE_ARCHIVE from
_bfd_ecoff to alpha_ecoff.
* ecoff.c (ecoff_link_add_archive_symbols): Use get_elt_at_filepos
field from backend structure, rather than always calling
_bfd_get_elt_at_filepos.
* coff-mips.c (mips_ecoff_backend_data): Initialize
get_elt_at_filepos field.
* archive.c (_bfd_generic_read_ar_hdr_mag): New function, copied
from _bfd_generic_read_ar_hdr with minor changes.
(_bfd_generic_read_ar_hdr): Use _bfd_generic_read_ar_hdr_mag.
* libbfd-in.h (_bfd_generic_read_ar_hdr_mag): Declare.
* libbfd.h: Rebuild.
* bfd-in.h (BFD_IN_MEMORY): Define.
* libbfd-in.h (struct bfd_in_memory): Define.
* libbfd.c (bfd_read): Handle BFD_IN_MEMORY flag.
(bfd_get_file_window): Don't try to map a BFD_IN_MEMORY file.
(bfd_write, bfd_stat): Abort if BFD_IN_MEMORY is set.
(bfd_tell, bfd_flush, bfd_seek): Handle BFD_IN_MEMORY flag.
* bfd.c (struct _bfd): Change iostream field from char * to PTR.
(bfd_get_size): Handle BFD_IN_MEMORY flag.
* cache.c (bfd_cache_close): Ignore BFD_IN_MEMORY files.
(bfd_open_file): Cast to PTR, not char *, when setting iostream.
(bfd_cache_lookup_worker): Abort if BFD_IN_MEMORY is set.
* opncls.c (bfd_fdopenr): Cast to PTR, not char *, when setting
iostream.
(bfd_openstreamr): Likewise.
* aoutx.h (NAME(aout,some_aout_object_p)): Only fstat iostream if
BFD_IN_MEMORY is not set.
* riscix.c (riscix_some_aout_object_p): Likewise.
* bfd-in2.h, libbfd.h: Rebuild.
* targets.c (bfd_target): Add _bfd_get_elt_at_index field.
(BFD_JUMP_TABLE_ARCHIVE): Add _get_elt_at_index.
(bfd_get_elt_at_index): Define.
* archive.c (_bfd_generic_get_elt_at_index): Rename from
bfd_get_elt_at_index. Change index parameter from int to
symindex.
* libbfd-in.h (_bfd_generic_get_elt_at_index): Declare.
(_bfd_noarchive_get_elt_at_index): Define.
(_bfd_archive_bsd_get_elt_at_index): Define.
(_bfd_archive_coff_get_elt_at_index): Define.
* bfd-in2.h, libbfd.h: Rebuild.
* aout-target.h (MY_get_elt_at_index): Define if not defined.
* coff-rs6000.c (xcoff_get_elt_at_index): Define.
* ieee.c (ieee_get_elt_at_index): Define.
* libecoff.h (_bfd_ecoff_get_elt_at_index): Define.
* oasys.c (oasys_get_elt_at_index): Define.
* som.c (som_get_elt_at_index): Define.
1996-01-09 21:40:39 +01:00
|
|
|
|
case O_RDONLY: nbfd->iostream = (PTR) fdopen (fd, FOPEN_RB); break;
|
|
|
|
|
case O_WRONLY: nbfd->iostream = (PTR) fdopen (fd, FOPEN_RUB); break;
|
|
|
|
|
case O_RDWR: nbfd->iostream = (PTR) fdopen (fd, FOPEN_RUB); break;
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
default: abort ();
|
|
|
|
|
}
|
1991-11-12 03:46:26 +01:00
|
|
|
|
#endif
|
1997-03-18 01:47:04 +01:00
|
|
|
|
|
|
|
|
|
if (nbfd->iostream == NULL)
|
|
|
|
|
{
|
|
|
|
|
objalloc_free ((struct objalloc *) nbfd->memory);
|
|
|
|
|
free (nbfd);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
|
1991-03-21 22:11:25 +01:00
|
|
|
|
/* OK, put everything where it belongs */
|
|
|
|
|
|
|
|
|
|
nbfd->filename = filename;
|
|
|
|
|
|
|
|
|
|
/* As a special case we allow a FD open for read/write to
|
|
|
|
|
be written through, although doing so requires that we end
|
|
|
|
|
the previous clause with a preposition. */
|
1991-11-12 03:46:26 +01:00
|
|
|
|
/* (O_ACCMODE) parens are to avoid Ultrix header file bug */
|
1997-03-18 01:47:04 +01:00
|
|
|
|
switch (fdflags & O_ACCMODE)
|
|
|
|
|
{
|
|
|
|
|
case O_RDONLY: nbfd->direction = read_direction; break;
|
|
|
|
|
case O_WRONLY: nbfd->direction = write_direction; break;
|
|
|
|
|
case O_RDWR: nbfd->direction = both_direction; break;
|
|
|
|
|
default: abort ();
|
|
|
|
|
}
|
|
|
|
|
|
1995-01-15 23:04:02 +01:00
|
|
|
|
if (! bfd_cache_init (nbfd))
|
1997-03-18 01:47:04 +01:00
|
|
|
|
{
|
|
|
|
|
objalloc_free ((struct objalloc *) nbfd->memory);
|
|
|
|
|
free (nbfd);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
1996-08-08 08:27:01 +02:00
|
|
|
|
nbfd->opened_once = true;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
|
|
|
|
|
return nbfd;
|
|
|
|
|
}
|
1995-01-23 19:35:07 +01:00
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
FUNCTION
|
|
|
|
|
bfd_openstreamr
|
|
|
|
|
|
|
|
|
|
SYNOPSIS
|
|
|
|
|
bfd *bfd_openstreamr();
|
|
|
|
|
|
|
|
|
|
DESCRIPTION
|
|
|
|
|
|
|
|
|
|
Open a BFD for read access on an existing stdio stream. When
|
|
|
|
|
the BFD is passed to <<bfd_close>>, the stream will be closed.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
bfd *
|
|
|
|
|
bfd_openstreamr (filename, target, stream)
|
|
|
|
|
const char *filename;
|
|
|
|
|
const char *target;
|
|
|
|
|
FILE *stream;
|
|
|
|
|
{
|
|
|
|
|
bfd *nbfd;
|
|
|
|
|
const bfd_target *target_vec;
|
|
|
|
|
|
|
|
|
|
nbfd = _bfd_new_bfd ();
|
|
|
|
|
if (nbfd == NULL)
|
Tue Jan 9 15:22:53 1996 David Mosberger-Tang <davidm@azstarnet.com>
* coff-alpha.c (alpha_relocate_section): During final link, allow
output .lita section to be bigger than 64k by adjusting gp value
on a per-input section basis.
* libecoff.h (struct ecoff_tdata): Add issued_multiple_gp_warning
field.
(struct ecoff_section_tdata): Add gp field.
Tue Jan 9 12:00:36 1996 Ian Lance Taylor <ian@cygnus.com>
Handle Alpha ECOFF changes in OSF/1 3.2.
* libecoff.h (struct ecoff_backend_data): Add get_elt_at_filepos
field.
* coff-alpha.c: Include "aout/ar.h".
(alpha_ecoff_get_relocated_section_contents): Don't require an
ALPHA_R_IGNORE reloc after an ALPHA_R_GPDISP reloc, since OSF/1
3.2 doesn't generate one.
(alpha_relocate_section): Likewise.
(alpha_ecoff_slurp_armap): Define.
(alpha_ecoff_slurp_extended_name_table): Define.
(alpha_ecoff_construct_extended_name_table): Define.
(alpha_ecoff_truncate_arname): Define.
(alpha_ecoff_write_armap): Define.
(alpha_ecoff_generic_stat_arch_elt): Define.
(alpha_ecoff_update_armap_timestamp): Define.
(ARFZMAG): Define.
(alpha_ecoff_read_ar_hdr): New static function.
(alpha_ecoff_get_elt_at_filepos): New static function.
(alpha_ecoff_openr_next_archived_file): New static function.
(alpha_ecoff_get_elt_at_index): New static function.
(alpha_ecoff_backend_data): Initialize get_elt_at_filepos field.
(ecoffalpha_little_vec): Change BFD_JUMP_TABLE_ARCHIVE from
_bfd_ecoff to alpha_ecoff.
* ecoff.c (ecoff_link_add_archive_symbols): Use get_elt_at_filepos
field from backend structure, rather than always calling
_bfd_get_elt_at_filepos.
* coff-mips.c (mips_ecoff_backend_data): Initialize
get_elt_at_filepos field.
* archive.c (_bfd_generic_read_ar_hdr_mag): New function, copied
from _bfd_generic_read_ar_hdr with minor changes.
(_bfd_generic_read_ar_hdr): Use _bfd_generic_read_ar_hdr_mag.
* libbfd-in.h (_bfd_generic_read_ar_hdr_mag): Declare.
* libbfd.h: Rebuild.
* bfd-in.h (BFD_IN_MEMORY): Define.
* libbfd-in.h (struct bfd_in_memory): Define.
* libbfd.c (bfd_read): Handle BFD_IN_MEMORY flag.
(bfd_get_file_window): Don't try to map a BFD_IN_MEMORY file.
(bfd_write, bfd_stat): Abort if BFD_IN_MEMORY is set.
(bfd_tell, bfd_flush, bfd_seek): Handle BFD_IN_MEMORY flag.
* bfd.c (struct _bfd): Change iostream field from char * to PTR.
(bfd_get_size): Handle BFD_IN_MEMORY flag.
* cache.c (bfd_cache_close): Ignore BFD_IN_MEMORY files.
(bfd_open_file): Cast to PTR, not char *, when setting iostream.
(bfd_cache_lookup_worker): Abort if BFD_IN_MEMORY is set.
* opncls.c (bfd_fdopenr): Cast to PTR, not char *, when setting
iostream.
(bfd_openstreamr): Likewise.
* aoutx.h (NAME(aout,some_aout_object_p)): Only fstat iostream if
BFD_IN_MEMORY is not set.
* riscix.c (riscix_some_aout_object_p): Likewise.
* bfd-in2.h, libbfd.h: Rebuild.
* targets.c (bfd_target): Add _bfd_get_elt_at_index field.
(BFD_JUMP_TABLE_ARCHIVE): Add _get_elt_at_index.
(bfd_get_elt_at_index): Define.
* archive.c (_bfd_generic_get_elt_at_index): Rename from
bfd_get_elt_at_index. Change index parameter from int to
symindex.
* libbfd-in.h (_bfd_generic_get_elt_at_index): Declare.
(_bfd_noarchive_get_elt_at_index): Define.
(_bfd_archive_bsd_get_elt_at_index): Define.
(_bfd_archive_coff_get_elt_at_index): Define.
* bfd-in2.h, libbfd.h: Rebuild.
* aout-target.h (MY_get_elt_at_index): Define if not defined.
* coff-rs6000.c (xcoff_get_elt_at_index): Define.
* ieee.c (ieee_get_elt_at_index): Define.
* libecoff.h (_bfd_ecoff_get_elt_at_index): Define.
* oasys.c (oasys_get_elt_at_index): Define.
* som.c (som_get_elt_at_index): Define.
1996-01-09 21:40:39 +01:00
|
|
|
|
return NULL;
|
1995-01-23 19:35:07 +01:00
|
|
|
|
|
|
|
|
|
target_vec = bfd_find_target (target, nbfd);
|
|
|
|
|
if (target_vec == NULL)
|
|
|
|
|
{
|
|
|
|
|
bfd_set_error (bfd_error_invalid_target);
|
1997-03-18 01:47:04 +01:00
|
|
|
|
objalloc_free ((struct objalloc *) nbfd->memory);
|
|
|
|
|
free (nbfd);
|
1995-01-23 19:35:07 +01:00
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
Tue Jan 9 15:22:53 1996 David Mosberger-Tang <davidm@azstarnet.com>
* coff-alpha.c (alpha_relocate_section): During final link, allow
output .lita section to be bigger than 64k by adjusting gp value
on a per-input section basis.
* libecoff.h (struct ecoff_tdata): Add issued_multiple_gp_warning
field.
(struct ecoff_section_tdata): Add gp field.
Tue Jan 9 12:00:36 1996 Ian Lance Taylor <ian@cygnus.com>
Handle Alpha ECOFF changes in OSF/1 3.2.
* libecoff.h (struct ecoff_backend_data): Add get_elt_at_filepos
field.
* coff-alpha.c: Include "aout/ar.h".
(alpha_ecoff_get_relocated_section_contents): Don't require an
ALPHA_R_IGNORE reloc after an ALPHA_R_GPDISP reloc, since OSF/1
3.2 doesn't generate one.
(alpha_relocate_section): Likewise.
(alpha_ecoff_slurp_armap): Define.
(alpha_ecoff_slurp_extended_name_table): Define.
(alpha_ecoff_construct_extended_name_table): Define.
(alpha_ecoff_truncate_arname): Define.
(alpha_ecoff_write_armap): Define.
(alpha_ecoff_generic_stat_arch_elt): Define.
(alpha_ecoff_update_armap_timestamp): Define.
(ARFZMAG): Define.
(alpha_ecoff_read_ar_hdr): New static function.
(alpha_ecoff_get_elt_at_filepos): New static function.
(alpha_ecoff_openr_next_archived_file): New static function.
(alpha_ecoff_get_elt_at_index): New static function.
(alpha_ecoff_backend_data): Initialize get_elt_at_filepos field.
(ecoffalpha_little_vec): Change BFD_JUMP_TABLE_ARCHIVE from
_bfd_ecoff to alpha_ecoff.
* ecoff.c (ecoff_link_add_archive_symbols): Use get_elt_at_filepos
field from backend structure, rather than always calling
_bfd_get_elt_at_filepos.
* coff-mips.c (mips_ecoff_backend_data): Initialize
get_elt_at_filepos field.
* archive.c (_bfd_generic_read_ar_hdr_mag): New function, copied
from _bfd_generic_read_ar_hdr with minor changes.
(_bfd_generic_read_ar_hdr): Use _bfd_generic_read_ar_hdr_mag.
* libbfd-in.h (_bfd_generic_read_ar_hdr_mag): Declare.
* libbfd.h: Rebuild.
* bfd-in.h (BFD_IN_MEMORY): Define.
* libbfd-in.h (struct bfd_in_memory): Define.
* libbfd.c (bfd_read): Handle BFD_IN_MEMORY flag.
(bfd_get_file_window): Don't try to map a BFD_IN_MEMORY file.
(bfd_write, bfd_stat): Abort if BFD_IN_MEMORY is set.
(bfd_tell, bfd_flush, bfd_seek): Handle BFD_IN_MEMORY flag.
* bfd.c (struct _bfd): Change iostream field from char * to PTR.
(bfd_get_size): Handle BFD_IN_MEMORY flag.
* cache.c (bfd_cache_close): Ignore BFD_IN_MEMORY files.
(bfd_open_file): Cast to PTR, not char *, when setting iostream.
(bfd_cache_lookup_worker): Abort if BFD_IN_MEMORY is set.
* opncls.c (bfd_fdopenr): Cast to PTR, not char *, when setting
iostream.
(bfd_openstreamr): Likewise.
* aoutx.h (NAME(aout,some_aout_object_p)): Only fstat iostream if
BFD_IN_MEMORY is not set.
* riscix.c (riscix_some_aout_object_p): Likewise.
* bfd-in2.h, libbfd.h: Rebuild.
* targets.c (bfd_target): Add _bfd_get_elt_at_index field.
(BFD_JUMP_TABLE_ARCHIVE): Add _get_elt_at_index.
(bfd_get_elt_at_index): Define.
* archive.c (_bfd_generic_get_elt_at_index): Rename from
bfd_get_elt_at_index. Change index parameter from int to
symindex.
* libbfd-in.h (_bfd_generic_get_elt_at_index): Declare.
(_bfd_noarchive_get_elt_at_index): Define.
(_bfd_archive_bsd_get_elt_at_index): Define.
(_bfd_archive_coff_get_elt_at_index): Define.
* bfd-in2.h, libbfd.h: Rebuild.
* aout-target.h (MY_get_elt_at_index): Define if not defined.
* coff-rs6000.c (xcoff_get_elt_at_index): Define.
* ieee.c (ieee_get_elt_at_index): Define.
* libecoff.h (_bfd_ecoff_get_elt_at_index): Define.
* oasys.c (oasys_get_elt_at_index): Define.
* som.c (som_get_elt_at_index): Define.
1996-01-09 21:40:39 +01:00
|
|
|
|
nbfd->iostream = (PTR) stream;
|
1995-01-23 19:35:07 +01:00
|
|
|
|
nbfd->filename = filename;
|
|
|
|
|
nbfd->direction = read_direction;
|
|
|
|
|
|
|
|
|
|
if (! bfd_cache_init (nbfd))
|
1997-03-18 01:47:04 +01:00
|
|
|
|
{
|
|
|
|
|
objalloc_free ((struct objalloc *) nbfd->memory);
|
|
|
|
|
free (nbfd);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
1995-01-23 19:35:07 +01:00
|
|
|
|
|
|
|
|
|
return nbfd;
|
|
|
|
|
}
|
1991-03-21 22:11:25 +01:00
|
|
|
|
|
|
|
|
|
/** bfd_openw -- open for writing.
|
Mon Aug 19 13:48:22 1991 Roland H. Pesch (pesch at cygint.cygnus.com)
* aoutx.h, archive.c, archures.c, bfd.c, bfd.texinfo, cache.c,
coffcode.h, core.c, format.c, libbfd.c, libbfd.h, libcoff.h,
opncls.c, reloc.c, section.c, syms.c, targets.c (documentation
segments): used BFD (caps) more consistently as a name in
discourse, fixed a few other minor typos and uses of fonts
1991-08-19 22:52:38 +02:00
|
|
|
|
Returns a pointer to a freshly-allocated BFD on success, or NULL.
|
1991-03-21 22:11:25 +01:00
|
|
|
|
|
|
|
|
|
See comment by bfd_fdopenr before you try to modify this function. */
|
|
|
|
|
|
1991-12-12 01:42:50 +01:00
|
|
|
|
/*
|
|
|
|
|
FUNCTION
|
|
|
|
|
bfd_openw
|
|
|
|
|
|
|
|
|
|
SYNOPSIS
|
|
|
|
|
bfd *bfd_openw(CONST char *filename, CONST char *target);
|
1991-07-04 18:52:56 +02:00
|
|
|
|
|
1991-12-12 01:42:50 +01:00
|
|
|
|
DESCRIPTION
|
1993-11-05 20:51:52 +01:00
|
|
|
|
Create a BFD, associated with file @var{filename}, using the
|
|
|
|
|
file format @var{target}, and return a pointer to it.
|
1991-12-12 01:42:50 +01:00
|
|
|
|
|
1995-01-15 23:04:02 +01:00
|
|
|
|
Possible errors are <<bfd_error_system_call>>, <<bfd_error_no_memory>>,
|
|
|
|
|
<<bfd_error_invalid_target>>.
|
1991-07-04 18:52:56 +02:00
|
|
|
|
*/
|
|
|
|
|
|
1991-03-21 22:11:25 +01:00
|
|
|
|
bfd *
|
* opncls.c (_bfd_new_bfd, _bfd_new_bfd_contained_in): Add
"_bfd_" to function names.
* archive.c (_bfd_create_empty_archive_element_shell),
libbfd-in.h: Change callers.
* libbfd.c (bfd_zmalloc): Renamed from zalloc.
* libbfd.c (bfd_add_to_string_table),
trad-core.c (trad_unix_core_file_p),
targets.c (bfd_target_list),
ptrace-core.c (ptrace_unix_core_file_p),
opncls.c (new_bfd), libbfd-in.h,
ieee.c (ieee_make_empty_symbol),
elf32-hppa.c (hppa_elf_stub_branch_reloc),
(hppa_elf_stub_reloc): Change callers.
* libbfd.h: Regenerated.
* archive.c (_bfd_look_for_bfd_in_cache): Add "_bfd_" to name.
(_bfd_get_elt_at_filepos),
coff-rs6000.c (rs6000coff_get_elt_at_filepos), libbfd-in.h:
Change callers.
* format.c (bfd_check_format_matches), libbfd-in.h, targets.c,
elfcode.h (elf_object_p): Rename target_vector to bfd_target_vector
and default_vector to bfd_default_vector.
* libbfd.h: Regenerated.
1994-01-25 14:25:26 +01:00
|
|
|
|
bfd_openw (filename, target)
|
|
|
|
|
CONST char *filename;
|
|
|
|
|
CONST char *target;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
{
|
|
|
|
|
bfd *nbfd;
|
1995-01-15 23:04:02 +01:00
|
|
|
|
const bfd_target *target_vec;
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
|
1995-01-15 23:04:02 +01:00
|
|
|
|
bfd_set_error (bfd_error_system_call);
|
1991-03-21 22:11:25 +01:00
|
|
|
|
|
|
|
|
|
/* nbfd has to point to head of malloc'ed block so that bfd_close may
|
|
|
|
|
reclaim it correctly. */
|
|
|
|
|
|
1997-03-18 01:47:04 +01:00
|
|
|
|
nbfd = _bfd_new_bfd ();
|
Tue Jan 9 15:22:53 1996 David Mosberger-Tang <davidm@azstarnet.com>
* coff-alpha.c (alpha_relocate_section): During final link, allow
output .lita section to be bigger than 64k by adjusting gp value
on a per-input section basis.
* libecoff.h (struct ecoff_tdata): Add issued_multiple_gp_warning
field.
(struct ecoff_section_tdata): Add gp field.
Tue Jan 9 12:00:36 1996 Ian Lance Taylor <ian@cygnus.com>
Handle Alpha ECOFF changes in OSF/1 3.2.
* libecoff.h (struct ecoff_backend_data): Add get_elt_at_filepos
field.
* coff-alpha.c: Include "aout/ar.h".
(alpha_ecoff_get_relocated_section_contents): Don't require an
ALPHA_R_IGNORE reloc after an ALPHA_R_GPDISP reloc, since OSF/1
3.2 doesn't generate one.
(alpha_relocate_section): Likewise.
(alpha_ecoff_slurp_armap): Define.
(alpha_ecoff_slurp_extended_name_table): Define.
(alpha_ecoff_construct_extended_name_table): Define.
(alpha_ecoff_truncate_arname): Define.
(alpha_ecoff_write_armap): Define.
(alpha_ecoff_generic_stat_arch_elt): Define.
(alpha_ecoff_update_armap_timestamp): Define.
(ARFZMAG): Define.
(alpha_ecoff_read_ar_hdr): New static function.
(alpha_ecoff_get_elt_at_filepos): New static function.
(alpha_ecoff_openr_next_archived_file): New static function.
(alpha_ecoff_get_elt_at_index): New static function.
(alpha_ecoff_backend_data): Initialize get_elt_at_filepos field.
(ecoffalpha_little_vec): Change BFD_JUMP_TABLE_ARCHIVE from
_bfd_ecoff to alpha_ecoff.
* ecoff.c (ecoff_link_add_archive_symbols): Use get_elt_at_filepos
field from backend structure, rather than always calling
_bfd_get_elt_at_filepos.
* coff-mips.c (mips_ecoff_backend_data): Initialize
get_elt_at_filepos field.
* archive.c (_bfd_generic_read_ar_hdr_mag): New function, copied
from _bfd_generic_read_ar_hdr with minor changes.
(_bfd_generic_read_ar_hdr): Use _bfd_generic_read_ar_hdr_mag.
* libbfd-in.h (_bfd_generic_read_ar_hdr_mag): Declare.
* libbfd.h: Rebuild.
* bfd-in.h (BFD_IN_MEMORY): Define.
* libbfd-in.h (struct bfd_in_memory): Define.
* libbfd.c (bfd_read): Handle BFD_IN_MEMORY flag.
(bfd_get_file_window): Don't try to map a BFD_IN_MEMORY file.
(bfd_write, bfd_stat): Abort if BFD_IN_MEMORY is set.
(bfd_tell, bfd_flush, bfd_seek): Handle BFD_IN_MEMORY flag.
* bfd.c (struct _bfd): Change iostream field from char * to PTR.
(bfd_get_size): Handle BFD_IN_MEMORY flag.
* cache.c (bfd_cache_close): Ignore BFD_IN_MEMORY files.
(bfd_open_file): Cast to PTR, not char *, when setting iostream.
(bfd_cache_lookup_worker): Abort if BFD_IN_MEMORY is set.
* opncls.c (bfd_fdopenr): Cast to PTR, not char *, when setting
iostream.
(bfd_openstreamr): Likewise.
* aoutx.h (NAME(aout,some_aout_object_p)): Only fstat iostream if
BFD_IN_MEMORY is not set.
* riscix.c (riscix_some_aout_object_p): Likewise.
* bfd-in2.h, libbfd.h: Rebuild.
* targets.c (bfd_target): Add _bfd_get_elt_at_index field.
(BFD_JUMP_TABLE_ARCHIVE): Add _get_elt_at_index.
(bfd_get_elt_at_index): Define.
* archive.c (_bfd_generic_get_elt_at_index): Rename from
bfd_get_elt_at_index. Change index parameter from int to
symindex.
* libbfd-in.h (_bfd_generic_get_elt_at_index): Declare.
(_bfd_noarchive_get_elt_at_index): Define.
(_bfd_archive_bsd_get_elt_at_index): Define.
(_bfd_archive_coff_get_elt_at_index): Define.
* bfd-in2.h, libbfd.h: Rebuild.
* aout-target.h (MY_get_elt_at_index): Define if not defined.
* coff-rs6000.c (xcoff_get_elt_at_index): Define.
* ieee.c (ieee_get_elt_at_index): Define.
* libecoff.h (_bfd_ecoff_get_elt_at_index): Define.
* oasys.c (oasys_get_elt_at_index): Define.
* som.c (som_get_elt_at_index): Define.
1996-01-09 21:40:39 +01:00
|
|
|
|
if (nbfd == NULL)
|
1991-03-21 22:11:25 +01:00
|
|
|
|
return NULL;
|
|
|
|
|
|
1991-05-29 02:20:02 +02:00
|
|
|
|
target_vec = bfd_find_target (target, nbfd);
|
1997-03-18 01:47:04 +01:00
|
|
|
|
if (target_vec == NULL)
|
|
|
|
|
{
|
|
|
|
|
objalloc_free ((struct objalloc *) nbfd->memory);
|
|
|
|
|
free (nbfd);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
1991-05-29 02:20:02 +02:00
|
|
|
|
|
1991-03-21 22:11:25 +01:00
|
|
|
|
nbfd->filename = filename;
|
|
|
|
|
nbfd->direction = write_direction;
|
|
|
|
|
|
1997-03-18 01:47:04 +01:00
|
|
|
|
if (bfd_open_file (nbfd) == NULL)
|
|
|
|
|
{
|
|
|
|
|
bfd_set_error (bfd_error_system_call); /* File not writeable, etc */
|
|
|
|
|
objalloc_free ((struct objalloc *) nbfd->memory);
|
|
|
|
|
free (nbfd);
|
|
|
|
|
return NULL;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
}
|
1997-03-18 01:47:04 +01:00
|
|
|
|
|
1991-03-21 22:11:25 +01:00
|
|
|
|
return nbfd;
|
|
|
|
|
}
|
1991-07-04 18:52:56 +02:00
|
|
|
|
|
1991-12-12 01:42:50 +01:00
|
|
|
|
/*
|
|
|
|
|
|
|
|
|
|
FUNCTION
|
|
|
|
|
bfd_close
|
|
|
|
|
|
|
|
|
|
SYNOPSIS
|
1993-11-05 20:51:52 +01:00
|
|
|
|
boolean bfd_close(bfd *abfd);
|
1991-12-12 01:42:50 +01:00
|
|
|
|
|
|
|
|
|
DESCRIPTION
|
1991-07-04 18:52:56 +02:00
|
|
|
|
|
1993-11-05 20:51:52 +01:00
|
|
|
|
Close a BFD. If the BFD was open for writing,
|
1991-12-12 01:42:50 +01:00
|
|
|
|
then pending operations are completed and the file written out
|
|
|
|
|
and closed. If the created file is executable, then
|
|
|
|
|
<<chmod>> is called to mark it as such.
|
1991-07-04 18:52:56 +02:00
|
|
|
|
|
1997-03-18 01:47:04 +01:00
|
|
|
|
All memory attached to the BFD is released.
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
|
|
|
|
|
The file descriptor associated with the BFD is closed (even
|
1993-11-05 20:51:52 +01:00
|
|
|
|
if it was passed in to BFD by <<bfd_fdopenr>>).
|
1991-12-12 01:42:50 +01:00
|
|
|
|
|
|
|
|
|
RETURNS
|
|
|
|
|
<<true>> is returned if all is ok, otherwise <<false>>.
|
1991-07-04 18:52:56 +02:00
|
|
|
|
*/
|
|
|
|
|
|
1991-12-12 01:42:50 +01:00
|
|
|
|
|
1991-03-21 22:11:25 +01:00
|
|
|
|
boolean
|
* opncls.c (_bfd_new_bfd, _bfd_new_bfd_contained_in): Add
"_bfd_" to function names.
* archive.c (_bfd_create_empty_archive_element_shell),
libbfd-in.h: Change callers.
* libbfd.c (bfd_zmalloc): Renamed from zalloc.
* libbfd.c (bfd_add_to_string_table),
trad-core.c (trad_unix_core_file_p),
targets.c (bfd_target_list),
ptrace-core.c (ptrace_unix_core_file_p),
opncls.c (new_bfd), libbfd-in.h,
ieee.c (ieee_make_empty_symbol),
elf32-hppa.c (hppa_elf_stub_branch_reloc),
(hppa_elf_stub_reloc): Change callers.
* libbfd.h: Regenerated.
* archive.c (_bfd_look_for_bfd_in_cache): Add "_bfd_" to name.
(_bfd_get_elt_at_filepos),
coff-rs6000.c (rs6000coff_get_elt_at_filepos), libbfd-in.h:
Change callers.
* format.c (bfd_check_format_matches), libbfd-in.h, targets.c,
elfcode.h (elf_object_p): Rename target_vector to bfd_target_vector
and default_vector to bfd_default_vector.
* libbfd.h: Regenerated.
1994-01-25 14:25:26 +01:00
|
|
|
|
bfd_close (abfd)
|
|
|
|
|
bfd *abfd;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
{
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
boolean ret;
|
|
|
|
|
|
1995-01-15 23:04:02 +01:00
|
|
|
|
if (!bfd_read_p (abfd))
|
|
|
|
|
{
|
|
|
|
|
if (! BFD_SEND_FMT (abfd, _bfd_write_contents, (abfd)))
|
|
|
|
|
return false;
|
|
|
|
|
}
|
1991-05-11 02:38:47 +02:00
|
|
|
|
|
1995-01-15 23:04:02 +01:00
|
|
|
|
if (! BFD_SEND (abfd, _close_and_cleanup, (abfd)))
|
|
|
|
|
return false;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
|
1995-01-15 23:04:02 +01:00
|
|
|
|
ret = bfd_cache_close (abfd);
|
1991-05-11 02:38:47 +02:00
|
|
|
|
|
|
|
|
|
/* If the file was open for writing and is now executable,
|
|
|
|
|
make it so */
|
1995-01-15 23:04:02 +01:00
|
|
|
|
if (ret
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
&& abfd->direction == write_direction
|
1995-01-15 23:04:02 +01:00
|
|
|
|
&& abfd->flags & EXEC_P)
|
|
|
|
|
{
|
|
|
|
|
struct stat buf;
|
|
|
|
|
|
|
|
|
|
if (stat (abfd->filename, &buf) == 0)
|
|
|
|
|
{
|
|
|
|
|
int mask = umask (0);
|
|
|
|
|
umask (mask);
|
|
|
|
|
chmod (abfd->filename,
|
|
|
|
|
(0777
|
|
|
|
|
& (buf.st_mode | ((S_IXUSR | S_IXGRP | S_IXOTH) &~ mask))));
|
|
|
|
|
}
|
|
|
|
|
}
|
1991-05-21 02:14:16 +02:00
|
|
|
|
|
1997-03-18 01:47:04 +01:00
|
|
|
|
objalloc_free ((struct objalloc *) abfd->memory);
|
|
|
|
|
free (abfd);
|
1995-01-15 23:04:02 +01:00
|
|
|
|
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
return ret;
|
1991-11-12 03:46:26 +01:00
|
|
|
|
}
|
|
|
|
|
|
1991-12-12 01:42:50 +01:00
|
|
|
|
/*
|
|
|
|
|
FUNCTION
|
|
|
|
|
bfd_close_all_done
|
|
|
|
|
|
|
|
|
|
SYNOPSIS
|
|
|
|
|
boolean bfd_close_all_done(bfd *);
|
|
|
|
|
|
|
|
|
|
DESCRIPTION
|
1993-11-05 20:51:52 +01:00
|
|
|
|
Close a BFD. Differs from <<bfd_close>>
|
1991-12-12 01:42:50 +01:00
|
|
|
|
since it does not complete any pending operations. This
|
|
|
|
|
routine would be used if the application had just used BFD for
|
|
|
|
|
swapping and didn't want to use any of the writing code.
|
1991-11-12 03:46:26 +01:00
|
|
|
|
|
1991-12-12 01:42:50 +01:00
|
|
|
|
If the created file is executable, then <<chmod>> is called
|
|
|
|
|
to mark it as such.
|
1991-11-12 03:46:26 +01:00
|
|
|
|
|
1997-03-18 01:47:04 +01:00
|
|
|
|
All memory attached to the BFD is released.
|
1991-12-12 01:42:50 +01:00
|
|
|
|
|
|
|
|
|
RETURNS
|
|
|
|
|
<<true>> is returned if all is ok, otherwise <<false>>.
|
1991-11-12 03:46:26 +01:00
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
boolean
|
* opncls.c (_bfd_new_bfd, _bfd_new_bfd_contained_in): Add
"_bfd_" to function names.
* archive.c (_bfd_create_empty_archive_element_shell),
libbfd-in.h: Change callers.
* libbfd.c (bfd_zmalloc): Renamed from zalloc.
* libbfd.c (bfd_add_to_string_table),
trad-core.c (trad_unix_core_file_p),
targets.c (bfd_target_list),
ptrace-core.c (ptrace_unix_core_file_p),
opncls.c (new_bfd), libbfd-in.h,
ieee.c (ieee_make_empty_symbol),
elf32-hppa.c (hppa_elf_stub_branch_reloc),
(hppa_elf_stub_reloc): Change callers.
* libbfd.h: Regenerated.
* archive.c (_bfd_look_for_bfd_in_cache): Add "_bfd_" to name.
(_bfd_get_elt_at_filepos),
coff-rs6000.c (rs6000coff_get_elt_at_filepos), libbfd-in.h:
Change callers.
* format.c (bfd_check_format_matches), libbfd-in.h, targets.c,
elfcode.h (elf_object_p): Rename target_vector to bfd_target_vector
and default_vector to bfd_default_vector.
* libbfd.h: Regenerated.
1994-01-25 14:25:26 +01:00
|
|
|
|
bfd_close_all_done (abfd)
|
|
|
|
|
bfd *abfd;
|
1991-11-12 03:46:26 +01:00
|
|
|
|
{
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
boolean ret;
|
|
|
|
|
|
1995-01-15 23:04:02 +01:00
|
|
|
|
ret = bfd_cache_close (abfd);
|
1991-11-12 03:46:26 +01:00
|
|
|
|
|
|
|
|
|
/* If the file was open for writing and is now executable,
|
|
|
|
|
make it so */
|
1995-01-15 23:04:02 +01:00
|
|
|
|
if (ret
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
&& abfd->direction == write_direction
|
1995-01-15 23:04:02 +01:00
|
|
|
|
&& abfd->flags & EXEC_P)
|
|
|
|
|
{
|
|
|
|
|
struct stat buf;
|
|
|
|
|
|
|
|
|
|
if (stat (abfd->filename, &buf) == 0)
|
|
|
|
|
{
|
|
|
|
|
int mask = umask (0);
|
|
|
|
|
umask (mask);
|
|
|
|
|
chmod (abfd->filename,
|
|
|
|
|
(0x777
|
|
|
|
|
& (buf.st_mode | ((S_IXUSR | S_IXGRP | S_IXOTH) &~ mask))));
|
|
|
|
|
}
|
|
|
|
|
}
|
1991-05-02 06:11:40 +02:00
|
|
|
|
|
1997-03-18 01:47:04 +01:00
|
|
|
|
objalloc_free ((struct objalloc *) abfd->memory);
|
|
|
|
|
free (abfd);
|
1991-07-04 18:52:56 +02:00
|
|
|
|
|
1997-03-18 01:47:04 +01:00
|
|
|
|
return ret;
|
1991-12-12 01:42:50 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
FUNCTION
|
|
|
|
|
bfd_create
|
|
|
|
|
|
|
|
|
|
SYNOPSIS
|
1993-11-04 23:49:47 +01:00
|
|
|
|
bfd *bfd_create(CONST char *filename, bfd *templ);
|
1991-12-12 01:42:50 +01:00
|
|
|
|
|
|
|
|
|
DESCRIPTION
|
1993-11-05 20:51:52 +01:00
|
|
|
|
Create a new BFD in the manner of
|
1991-12-12 01:42:50 +01:00
|
|
|
|
<<bfd_openw>>, but without opening a file. The new BFD
|
|
|
|
|
takes the target from the target used by @var{template}. The
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
format is always set to <<bfd_object>>.
|
1991-12-12 01:42:50 +01:00
|
|
|
|
|
1991-07-04 18:52:56 +02:00
|
|
|
|
*/
|
1991-05-02 06:11:40 +02:00
|
|
|
|
|
1991-03-21 22:11:25 +01:00
|
|
|
|
bfd *
|
* opncls.c (_bfd_new_bfd, _bfd_new_bfd_contained_in): Add
"_bfd_" to function names.
* archive.c (_bfd_create_empty_archive_element_shell),
libbfd-in.h: Change callers.
* libbfd.c (bfd_zmalloc): Renamed from zalloc.
* libbfd.c (bfd_add_to_string_table),
trad-core.c (trad_unix_core_file_p),
targets.c (bfd_target_list),
ptrace-core.c (ptrace_unix_core_file_p),
opncls.c (new_bfd), libbfd-in.h,
ieee.c (ieee_make_empty_symbol),
elf32-hppa.c (hppa_elf_stub_branch_reloc),
(hppa_elf_stub_reloc): Change callers.
* libbfd.h: Regenerated.
* archive.c (_bfd_look_for_bfd_in_cache): Add "_bfd_" to name.
(_bfd_get_elt_at_filepos),
coff-rs6000.c (rs6000coff_get_elt_at_filepos), libbfd-in.h:
Change callers.
* format.c (bfd_check_format_matches), libbfd-in.h, targets.c,
elfcode.h (elf_object_p): Rename target_vector to bfd_target_vector
and default_vector to bfd_default_vector.
* libbfd.h: Regenerated.
1994-01-25 14:25:26 +01:00
|
|
|
|
bfd_create (filename, templ)
|
|
|
|
|
CONST char *filename;
|
|
|
|
|
bfd *templ;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
{
|
1997-03-18 01:47:04 +01:00
|
|
|
|
bfd *nbfd;
|
|
|
|
|
|
|
|
|
|
nbfd = _bfd_new_bfd ();
|
|
|
|
|
if (nbfd == NULL)
|
|
|
|
|
return NULL;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
nbfd->filename = filename;
|
1997-03-18 01:47:04 +01:00
|
|
|
|
if (templ)
|
1993-11-04 23:49:47 +01:00
|
|
|
|
nbfd->xvec = templ->xvec;
|
1991-03-21 22:11:25 +01:00
|
|
|
|
nbfd->direction = no_direction;
|
1997-03-18 01:47:04 +01:00
|
|
|
|
bfd_set_format (nbfd, bfd_object);
|
1991-03-21 22:11:25 +01:00
|
|
|
|
return nbfd;
|
|
|
|
|
}
|
1991-04-23 18:02:09 +02:00
|
|
|
|
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
/*
|
1991-12-12 01:42:50 +01:00
|
|
|
|
INTERNAL_FUNCTION
|
1997-03-17 17:36:08 +01:00
|
|
|
|
bfd_alloc
|
1991-12-12 01:42:50 +01:00
|
|
|
|
|
|
|
|
|
SYNOPSIS
|
1997-03-17 17:36:08 +01:00
|
|
|
|
PTR bfd_alloc (bfd *abfd, size_t wanted);
|
1991-05-02 06:11:40 +02:00
|
|
|
|
|
1991-12-12 01:42:50 +01:00
|
|
|
|
DESCRIPTION
|
1997-03-18 01:47:04 +01:00
|
|
|
|
Allocate a block of @var{wanted} bytes of memory attached to
|
|
|
|
|
<<abfd>> and return a pointer to it.
|
1991-12-12 01:42:50 +01:00
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
PTR
|
1997-03-17 17:36:08 +01:00
|
|
|
|
bfd_alloc (abfd, size)
|
* opncls.c (_bfd_new_bfd, _bfd_new_bfd_contained_in): Add
"_bfd_" to function names.
* archive.c (_bfd_create_empty_archive_element_shell),
libbfd-in.h: Change callers.
* libbfd.c (bfd_zmalloc): Renamed from zalloc.
* libbfd.c (bfd_add_to_string_table),
trad-core.c (trad_unix_core_file_p),
targets.c (bfd_target_list),
ptrace-core.c (ptrace_unix_core_file_p),
opncls.c (new_bfd), libbfd-in.h,
ieee.c (ieee_make_empty_symbol),
elf32-hppa.c (hppa_elf_stub_branch_reloc),
(hppa_elf_stub_reloc): Change callers.
* libbfd.h: Regenerated.
* archive.c (_bfd_look_for_bfd_in_cache): Add "_bfd_" to name.
(_bfd_get_elt_at_filepos),
coff-rs6000.c (rs6000coff_get_elt_at_filepos), libbfd-in.h:
Change callers.
* format.c (bfd_check_format_matches), libbfd-in.h, targets.c,
elfcode.h (elf_object_p): Rename target_vector to bfd_target_vector
and default_vector to bfd_default_vector.
* libbfd.h: Regenerated.
1994-01-25 14:25:26 +01:00
|
|
|
|
bfd *abfd;
|
|
|
|
|
size_t size;
|
1991-05-21 02:14:16 +02:00
|
|
|
|
{
|
Tue Jan 9 15:22:53 1996 David Mosberger-Tang <davidm@azstarnet.com>
* coff-alpha.c (alpha_relocate_section): During final link, allow
output .lita section to be bigger than 64k by adjusting gp value
on a per-input section basis.
* libecoff.h (struct ecoff_tdata): Add issued_multiple_gp_warning
field.
(struct ecoff_section_tdata): Add gp field.
Tue Jan 9 12:00:36 1996 Ian Lance Taylor <ian@cygnus.com>
Handle Alpha ECOFF changes in OSF/1 3.2.
* libecoff.h (struct ecoff_backend_data): Add get_elt_at_filepos
field.
* coff-alpha.c: Include "aout/ar.h".
(alpha_ecoff_get_relocated_section_contents): Don't require an
ALPHA_R_IGNORE reloc after an ALPHA_R_GPDISP reloc, since OSF/1
3.2 doesn't generate one.
(alpha_relocate_section): Likewise.
(alpha_ecoff_slurp_armap): Define.
(alpha_ecoff_slurp_extended_name_table): Define.
(alpha_ecoff_construct_extended_name_table): Define.
(alpha_ecoff_truncate_arname): Define.
(alpha_ecoff_write_armap): Define.
(alpha_ecoff_generic_stat_arch_elt): Define.
(alpha_ecoff_update_armap_timestamp): Define.
(ARFZMAG): Define.
(alpha_ecoff_read_ar_hdr): New static function.
(alpha_ecoff_get_elt_at_filepos): New static function.
(alpha_ecoff_openr_next_archived_file): New static function.
(alpha_ecoff_get_elt_at_index): New static function.
(alpha_ecoff_backend_data): Initialize get_elt_at_filepos field.
(ecoffalpha_little_vec): Change BFD_JUMP_TABLE_ARCHIVE from
_bfd_ecoff to alpha_ecoff.
* ecoff.c (ecoff_link_add_archive_symbols): Use get_elt_at_filepos
field from backend structure, rather than always calling
_bfd_get_elt_at_filepos.
* coff-mips.c (mips_ecoff_backend_data): Initialize
get_elt_at_filepos field.
* archive.c (_bfd_generic_read_ar_hdr_mag): New function, copied
from _bfd_generic_read_ar_hdr with minor changes.
(_bfd_generic_read_ar_hdr): Use _bfd_generic_read_ar_hdr_mag.
* libbfd-in.h (_bfd_generic_read_ar_hdr_mag): Declare.
* libbfd.h: Rebuild.
* bfd-in.h (BFD_IN_MEMORY): Define.
* libbfd-in.h (struct bfd_in_memory): Define.
* libbfd.c (bfd_read): Handle BFD_IN_MEMORY flag.
(bfd_get_file_window): Don't try to map a BFD_IN_MEMORY file.
(bfd_write, bfd_stat): Abort if BFD_IN_MEMORY is set.
(bfd_tell, bfd_flush, bfd_seek): Handle BFD_IN_MEMORY flag.
* bfd.c (struct _bfd): Change iostream field from char * to PTR.
(bfd_get_size): Handle BFD_IN_MEMORY flag.
* cache.c (bfd_cache_close): Ignore BFD_IN_MEMORY files.
(bfd_open_file): Cast to PTR, not char *, when setting iostream.
(bfd_cache_lookup_worker): Abort if BFD_IN_MEMORY is set.
* opncls.c (bfd_fdopenr): Cast to PTR, not char *, when setting
iostream.
(bfd_openstreamr): Likewise.
* aoutx.h (NAME(aout,some_aout_object_p)): Only fstat iostream if
BFD_IN_MEMORY is not set.
* riscix.c (riscix_some_aout_object_p): Likewise.
* bfd-in2.h, libbfd.h: Rebuild.
* targets.c (bfd_target): Add _bfd_get_elt_at_index field.
(BFD_JUMP_TABLE_ARCHIVE): Add _get_elt_at_index.
(bfd_get_elt_at_index): Define.
* archive.c (_bfd_generic_get_elt_at_index): Rename from
bfd_get_elt_at_index. Change index parameter from int to
symindex.
* libbfd-in.h (_bfd_generic_get_elt_at_index): Declare.
(_bfd_noarchive_get_elt_at_index): Define.
(_bfd_archive_bsd_get_elt_at_index): Define.
(_bfd_archive_coff_get_elt_at_index): Define.
* bfd-in2.h, libbfd.h: Rebuild.
* aout-target.h (MY_get_elt_at_index): Define if not defined.
* coff-rs6000.c (xcoff_get_elt_at_index): Define.
* ieee.c (ieee_get_elt_at_index): Define.
* libecoff.h (_bfd_ecoff_get_elt_at_index): Define.
* oasys.c (oasys_get_elt_at_index): Define.
* som.c (som_get_elt_at_index): Define.
1996-01-09 21:40:39 +01:00
|
|
|
|
PTR ret;
|
|
|
|
|
|
1997-03-18 01:47:04 +01:00
|
|
|
|
ret = objalloc_alloc (abfd->memory, (unsigned long) size);
|
Tue Jan 9 15:22:53 1996 David Mosberger-Tang <davidm@azstarnet.com>
* coff-alpha.c (alpha_relocate_section): During final link, allow
output .lita section to be bigger than 64k by adjusting gp value
on a per-input section basis.
* libecoff.h (struct ecoff_tdata): Add issued_multiple_gp_warning
field.
(struct ecoff_section_tdata): Add gp field.
Tue Jan 9 12:00:36 1996 Ian Lance Taylor <ian@cygnus.com>
Handle Alpha ECOFF changes in OSF/1 3.2.
* libecoff.h (struct ecoff_backend_data): Add get_elt_at_filepos
field.
* coff-alpha.c: Include "aout/ar.h".
(alpha_ecoff_get_relocated_section_contents): Don't require an
ALPHA_R_IGNORE reloc after an ALPHA_R_GPDISP reloc, since OSF/1
3.2 doesn't generate one.
(alpha_relocate_section): Likewise.
(alpha_ecoff_slurp_armap): Define.
(alpha_ecoff_slurp_extended_name_table): Define.
(alpha_ecoff_construct_extended_name_table): Define.
(alpha_ecoff_truncate_arname): Define.
(alpha_ecoff_write_armap): Define.
(alpha_ecoff_generic_stat_arch_elt): Define.
(alpha_ecoff_update_armap_timestamp): Define.
(ARFZMAG): Define.
(alpha_ecoff_read_ar_hdr): New static function.
(alpha_ecoff_get_elt_at_filepos): New static function.
(alpha_ecoff_openr_next_archived_file): New static function.
(alpha_ecoff_get_elt_at_index): New static function.
(alpha_ecoff_backend_data): Initialize get_elt_at_filepos field.
(ecoffalpha_little_vec): Change BFD_JUMP_TABLE_ARCHIVE from
_bfd_ecoff to alpha_ecoff.
* ecoff.c (ecoff_link_add_archive_symbols): Use get_elt_at_filepos
field from backend structure, rather than always calling
_bfd_get_elt_at_filepos.
* coff-mips.c (mips_ecoff_backend_data): Initialize
get_elt_at_filepos field.
* archive.c (_bfd_generic_read_ar_hdr_mag): New function, copied
from _bfd_generic_read_ar_hdr with minor changes.
(_bfd_generic_read_ar_hdr): Use _bfd_generic_read_ar_hdr_mag.
* libbfd-in.h (_bfd_generic_read_ar_hdr_mag): Declare.
* libbfd.h: Rebuild.
* bfd-in.h (BFD_IN_MEMORY): Define.
* libbfd-in.h (struct bfd_in_memory): Define.
* libbfd.c (bfd_read): Handle BFD_IN_MEMORY flag.
(bfd_get_file_window): Don't try to map a BFD_IN_MEMORY file.
(bfd_write, bfd_stat): Abort if BFD_IN_MEMORY is set.
(bfd_tell, bfd_flush, bfd_seek): Handle BFD_IN_MEMORY flag.
* bfd.c (struct _bfd): Change iostream field from char * to PTR.
(bfd_get_size): Handle BFD_IN_MEMORY flag.
* cache.c (bfd_cache_close): Ignore BFD_IN_MEMORY files.
(bfd_open_file): Cast to PTR, not char *, when setting iostream.
(bfd_cache_lookup_worker): Abort if BFD_IN_MEMORY is set.
* opncls.c (bfd_fdopenr): Cast to PTR, not char *, when setting
iostream.
(bfd_openstreamr): Likewise.
* aoutx.h (NAME(aout,some_aout_object_p)): Only fstat iostream if
BFD_IN_MEMORY is not set.
* riscix.c (riscix_some_aout_object_p): Likewise.
* bfd-in2.h, libbfd.h: Rebuild.
* targets.c (bfd_target): Add _bfd_get_elt_at_index field.
(BFD_JUMP_TABLE_ARCHIVE): Add _get_elt_at_index.
(bfd_get_elt_at_index): Define.
* archive.c (_bfd_generic_get_elt_at_index): Rename from
bfd_get_elt_at_index. Change index parameter from int to
symindex.
* libbfd-in.h (_bfd_generic_get_elt_at_index): Declare.
(_bfd_noarchive_get_elt_at_index): Define.
(_bfd_archive_bsd_get_elt_at_index): Define.
(_bfd_archive_coff_get_elt_at_index): Define.
* bfd-in2.h, libbfd.h: Rebuild.
* aout-target.h (MY_get_elt_at_index): Define if not defined.
* coff-rs6000.c (xcoff_get_elt_at_index): Define.
* ieee.c (ieee_get_elt_at_index): Define.
* libecoff.h (_bfd_ecoff_get_elt_at_index): Define.
* oasys.c (oasys_get_elt_at_index): Define.
* som.c (som_get_elt_at_index): Define.
1996-01-09 21:40:39 +01:00
|
|
|
|
if (ret == NULL)
|
|
|
|
|
bfd_set_error (bfd_error_no_memory);
|
|
|
|
|
return ret;
|
1991-05-21 02:14:16 +02:00
|
|
|
|
}
|
1991-07-04 18:52:56 +02:00
|
|
|
|
|
* opncls.c (_bfd_new_bfd, _bfd_new_bfd_contained_in): Add
"_bfd_" to function names.
* archive.c (_bfd_create_empty_archive_element_shell),
libbfd-in.h: Change callers.
* libbfd.c (bfd_zmalloc): Renamed from zalloc.
* libbfd.c (bfd_add_to_string_table),
trad-core.c (trad_unix_core_file_p),
targets.c (bfd_target_list),
ptrace-core.c (ptrace_unix_core_file_p),
opncls.c (new_bfd), libbfd-in.h,
ieee.c (ieee_make_empty_symbol),
elf32-hppa.c (hppa_elf_stub_branch_reloc),
(hppa_elf_stub_reloc): Change callers.
* libbfd.h: Regenerated.
* archive.c (_bfd_look_for_bfd_in_cache): Add "_bfd_" to name.
(_bfd_get_elt_at_filepos),
coff-rs6000.c (rs6000coff_get_elt_at_filepos), libbfd-in.h:
Change callers.
* format.c (bfd_check_format_matches), libbfd-in.h, targets.c,
elfcode.h (elf_object_p): Rename target_vector to bfd_target_vector
and default_vector to bfd_default_vector.
* libbfd.h: Regenerated.
1994-01-25 14:25:26 +01:00
|
|
|
|
PTR
|
|
|
|
|
bfd_zalloc (abfd, size)
|
|
|
|
|
bfd *abfd;
|
|
|
|
|
size_t size;
|
1991-04-23 18:02:09 +02:00
|
|
|
|
{
|
Stricter prototyping, to force type conversions between 64-bit target and
32-bit host values.
* libbfd.c (bfd_xmalloc_by_size_t): New function.
* opncls.c (bfd_cache_init, bfd_open_file): Add prototypes to declarations.
(obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
(new_bfd): Prototype-style definition, using DEFUN.
(bfd_alloc_grow, bfd_alloc, bfd_zalloc, bfd_realloc): Size argument is type
size_t, not bfd_size_type.
* ieee.c (obstack_chunk_alloc): Use bfd_xmalloc_by_size_t.
* bfd.c (bfd_default_error_trap, bfd_error_trap,
bfd_error_nonrepresentabltrap): Prototypes.
* libbfd-in.h (bfd_alloc, bfd_zalloc, bfd_realloc, bfd_alloc_grow): Adjusted
prototypes for arg type change.
* archive.c (get_elt_at_filepos, do_slurp_bsd_armap, normalize,
do_slurp_coff_armap, bfd_construct_extended_name_table): Prototypes.
1993-07-06 22:20:31 +02:00
|
|
|
|
PTR res;
|
1997-03-18 01:47:04 +01:00
|
|
|
|
|
|
|
|
|
res = bfd_alloc (abfd, size);
|
Make all callers of malloc or realloc (including via obstacks)
check the result for NULL. Most set bfd_error to no_memory and
return in that case; a few are harder to fix, and are marked
with "FIXME <return type>".
* elf32-hppa.c (hppa_elf_build_arg_reloc_stub
hppa_elf_build_long_branch_stub): Check bfd_make_empty_symbol return.
* linker.c (_bfd_generic_link_output_symbols
_bfd_generic_link_write_global_symbol): Ditto
* section.c (bfd_make_section_anyway): Ditto.
* tekhex.c (find_chunk tekhex_mkobject): Check bfd_alloc.
(first_phase): Ditto. FIXME void
(tekhex_make_empty_symbol): Check bfd_zalloc.
* sunos.c (sunos_read_dynamic_info): Check bfd_zalloc.
(MY(read_dynamic_symbols) MY(read_dynamic_relocs)): Check bfd_alloc.
* stringhash.c (_bfd_stringtab_hash_newfunc): Check bfd_hash_allocate.
* srec.c: Indent.
(fillup_symbols): Check bfd_alloc. FIXME void
(srec_mkobject srec_get_section_contents
srec_set_section_contents): Check bfd_alloc.
(srec_make_empty_symbol): Check bfd_zalloc.
* som.c (hppa_som_gen_reloc_type): Check bfd_alloc_by_size_t.
(make_unique_section): Check bfd_alloc.
(som_new_section_hook): Check bfd_zalloc.
(bfd_som_attach_aux_hdr): Ditto. FIXME void
* rs6000-core.c (rs6000coff_core_p): Check bfd_zalloc.
* osf-core.c (osf_core_make_empty_symbol): Check bfd_zalloc.
(osf_core_core_file_p): Check bfd_alloc.
* oasys.c (oasys_slurp_symbol_table oasys_archive_p
oasys_mkobject oasys_object_p oasys_new_section_hook
oasys_set_section_contents): Check bfd_alloc.
(oasys_slurp_section_data): Check bfd_zalloc and bfd_alloc.
(oasys_make_empty_symbol): Check bfd_zalloc.
* nlmcode.h (nlm_make_empty_symbol): Check bfd_zalloc.
(nlm_slurp_symbol_table): Check bfd_zalloc and bfd_alloc.
* nlm32-sparc.c (nlm_sparc_read_import): Check bfd_alloc.
* nlm32-i386.c (nlm_i386_read_import): Check bfd_alloc.
* nlm32-alpha.c (nlm_alpha_read_import): Check bfd_alloc.
* linker.c (_bfd_link_hash_newfunc
(generic_link_hash_newfunc
(archive_hash_newfunc
(_bfd_generic_link_add_one_symbol): Check bfd_hash_allocate.
(_bfd_generic_final_link
(_bfd_generic_link_output_symbols
(default_indirect_link_order): Check bfd_alloc.
(bfd_new_link_order): Check bfd_alloc_by_size_t.
* irix-core.c (irix_core_make_empty_symbol): Check bfd_zalloc.
* ieee.c: Indent.
(read_id get_symbol get_section_entry ieee_archive_p ieee_object_p
ieee_slurp_section_data ieee_new_section_hook): Check bfd_alloc.
(do_one): Check bfd_alloc. Return a boolean.
(ieee_slurp_section_data): Check it.
(init_for_output): Check bfd_alloc. Return a boolean.
(ieee_set_section_contents): Check it.
(do_with_relocs): Check bfd_alloc. Return a boolean.
(ieee_bfd_debug_info_accumulate): Ditto. FIXME void.
(ieee_mkobject): Check bfd_zalloc.
(ieee_make_empty_symbol): Check bfd_zmalloc.
* hpux-core.c (hpux_core_make_empty_symbol): Check
bfd_zalloc.
* hppabsd-core.c (hppabsd_core_make_empty_symbol): Check
bfd_zalloc.
(hppabsd_core_core_file_p): Check bfd_zalloc.
* hp300hpux.c (MY(slurp_symbol_table)): Check bfd_alloc.
* elfcode.h (elf_new_section_hook): Check bfd_alloc.
(bfd_section_from_phdr): Ditto.
(write_relocs): Ditto. FIXME void
(elf_map_symbols assign_section_numbers map_program_segments):
Ditto. Return a boolean.
(swap_out_syms): Ditto. Check elf_map_symbols.
(elf_slurp_symbol_table): Check bfd_zalloc.
(elf_slurp_reloca_table): Check bfd_alloc.
(elf_slurp_reloc_table): Ditto.
(elf_compute_section_file_positions): Check assign_section_numbers.
(assign_file_positions_except_relocs): Return a boolean.
Check map_program_segments.
(elf_compute_section_file_positions): Check it.
* elf32-mips.c (mips_elf_final_link): Check bfd_alloc.
* elf32-hppa.c (hppa_elf_stub_branch_reloc): Check bfd_zmalloc and
realloc.
(hppa_elf_stub_reloc): Ditto.
(hppa_elf_build_arg_reloc_stub): Check bfd_zalloc.
(hppa_elf_build_long_branch_stub): Ditto.
(elf32_hppa_backend_symbol_table_processing): Ditto.
* ecoff.c (ecoff_set_symbol_info): Check bfd_alloc. Return a boolean.
(ecoff_slurp_symbol_table): Check it.
(ecoff_slurp_armap): Check bfd_alloc.
(ecoff_write_armap): Check bfd_zalloc.
(ecoff_link_hash_newfunc): Check bfd_hash_allocate and
_bfd_link_hash_newfunc.
(ecoff_link_add_externals): Check bfd_alloc.
* ctor.c (bfd_constructor_entry): Check bfd_alloc.
* coffgen.c (coff_real_object_p): Check bfd_alloc.
(coff_renumber_symbols): Check bfd_alloc_by_size_t. Return a boolean.
(coff_write_symbol): Check bfd_alloc. FIXME int
(coff_write_linenumbers): Check bfd_alloc. Return a boolean.
(coff_section_symbol): Check bfd_alloc_by_size_t.
(coff_get_normalized_symtab): Check bfd_alloc.
(coff_bfd_make_debug_symbol): Check bfd_zalloc.
* libcoff-in.h: Change decls of coff_renumber_symbols,
coff_write_linenumbers.
* libcoff.h: Rebuilt.
* coffcode.h (coff_write_object_contents): Check
coff_renumber_symbols, coff_write_linenumbers.
* coffcode.h: Indent.
(coff_add_missing_symbols): Check bfd_alloc_by_size_t. Return a
boolean.
(coff_write_object_contents): Check it.
* coff-alpha.c (alpha_relocate_section): Check bfd_alloc.
* coff-mips.c (mips_relocate_section): Ditto.
* archive.c (bfd_slurp_bsd_armap_f2): Check bfd_alloc value.
(do_slurp_bsd_armap): Ditto.
(compute_and_write_armap): Check bfd_realloc value.
* aoutx.h (translate_from_native_sym_flags): Check bfd_alloc
return value. Return boolean value.
(NAME(aout,make_empty_symbol)): Check bfd_zalloc return value.
(NAME(aout,slurp_symbol_table)): Check bf_alloc and bfd_zalloc
return value.
(add_to_stringtab): Ditto. FIXME void
(aout_link_hash_newfunc): Check bfd_hash_allocate return value.
(aout_link_add_symbols): Check bfd_alloc value.
(translate_symbol_table): Check translate_from_native_sym_flags.
* hp300hpux.c (MY(slurp_symbol_table)): Ditto.
* aoutx.h (aout_link_hash_newfunc): Check _bfd_link_hash_newfunc.
* opncls.c (bfd_zalloc bfd_realloc): Check result of bfd_alloc.
* opncls.c (obstack_chunk_alloc): Define as malloc, not
bfd_xmalloc_by_size_t.
(_bfd_new_bfd): Check obstack_begin for 0 return.
* ieee.c (obstack_chunk_alloc): Define as malloc, not
bfd_xmalloc_by_size_t.
(ieee_archive_p): Check obstack_begin for 0 return and
obstack_finish for NULL return.
* hash.c (obstack_chunk_alloc): Define as malloc, not
bfd_xmalloc_by_size_t.
(bfd_hash_table_init_n): Check obstack_begin for 0 return and
obstack_finish for NULL return.
(bfd_hash_lookup): Check obstack_alloc for NULL return.
* ecofflink.c (obstack_chunk_alloc): Define as malloc, not
bfd_xmalloc_by_size_t.
bfd_ecoff_debug_accumulate
bfd_ecoff_debug_accumulate_other): Check obstack_alloc.
(add_file_shuffle add_memory_shuffle): Check obstack_alloc for
NULL return. Return boolean, not void.
(bfd_ecoff_debug_init): Check obstack_begin for 0 return.
(bfd_ecoff_debug_accumulate): Check add_file_shuffle
and add_memory_shuffle return.
(string_hash_newfunc): Check bfd_hash_allocate and bfd_hash_newfunc.
(bfd_ecoff_debug_accumulate): Check bfd_alloc.
(ecoff_add_string): Check add_memory_shuffle return.
* libbfd-in.h (xmalloc, bfd_xmalloc, bfd_xmalloc_by_size_t):
Remove decls.
* libbfd.h: Rebuilt.
1994-02-12 01:45:54 +01:00
|
|
|
|
if (res)
|
1997-03-18 01:47:04 +01:00
|
|
|
|
memset (res, 0, size);
|
1991-04-23 18:02:09 +02:00
|
|
|
|
return res;
|
|
|
|
|
}
|
1997-03-18 01:47:04 +01:00
|
|
|
|
|
|
|
|
|
/* Free a block allocated for a BFD. */
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
|
bfd_release (abfd, block)
|
|
|
|
|
bfd *abfd;
|
|
|
|
|
PTR block;
|
|
|
|
|
{
|
|
|
|
|
objalloc_free_block ((struct objalloc *) abfd->memory, block);
|
|
|
|
|
}
|