boolean, and changed written to unsigned int *. Check error
returns from called functions.
(coff_write_alien_symbol): Likewise.
(coff_write_native_symbol): Likewise.
(coff_write_symbols): Likewise. Reworked checks on whether to
write symbol name to string table for clarity and to avoid core
dumping when given a non COFF symbol.
* libcoff-in.h (coff_write_symbols): Declare as returning boolean.
* libcoff.h: Rebuilt.
* coffcode.h (coff_write_object_contents): Check return value of
coff_write_symbols.
in executables left by the HP linker. Does not rely on subspace
alignments as subspaces are *NOT* guaranteed to be properly
aligned in an executable (can you believe that!).
variant of a.out.
* configure.in, config.bfd: Use them for Dynix.
* Makefile.in: Add dependencies for i386dynix.o.
* targets.c: Add definition for i386dynix_vec.
read. (bfd_error_system_call or bfd_error_file_truncated).
* som.c: Do not blindly set bfd_error_system_call after a
failing bfd_read, bfd_write, or bfd_seek. In a few places
(like som_object_p) override the error status set by bfd_read.
* aix386-core.c, aout-encap,c archive.c, bout.c: Likewise.
* coff-rs6000.c, coffgen.c ecoff.c, elf.c: Likewise.
* elf32-hppa.c, elfcode.h, hp300hpux.c, i386lynx.c: Likewise.
* nlm32-alpha.c, nlm32-i386.c, nlm32-sparc.c: Likewise.
* som.c: Check return values from several bfd_{seek,read,write}
calls that we just assumed were not failing.
use a five instruction sequence for funtion calls which are out of
range of the bal instruction.
* libecoff.h (struct ecoff_section_tdata): Define.
(ecoff_section_data): Define.
(ecoff_bfd_relax_section): Don't define.
* ecoff.c (ecoff_final_link_debug_accumulate): Don't read or free
the debugging information if it has already been read.
(ecoff_indirect_link_order): Handle _cooked_size being different
from _raw_size. Don't reread the contents or the relocs if they
have already been read in.
* coff-mips.c (mips_howto_table): Change bitsize of PCREL16 from
18 to 16.
(PCREL16_EXPANSION_ADJUSTMENT): Define.
(mips_relocate_refhi): Take adjust argument.
(mips_relocate_section): Handle reloc offsets stored in section
used_by_bfd field. Call mips_relax_pcrel16 to handle details of
expanding an out of range PCREL16. Keep trace of adjustments
required by expansions. Set s and unset h when converting a reloc
from undefined to section. Change handling of PC relative relocs:
if against a section, they are correct in the object file, if
against an external symbol they are pcrel_offset.
(mips_relax_section): New function.
(mips_relax_pcrel16): New function.
(ecoff_bfd_relax_section): Define.
* coff-alpha.c (ecoff_bfd_relax_section): Define.
* ecofflink.c (bfd_ecoff_debug_accumulate): Handle adjustments
built by mips_relax_section when writing out addresses.
* elf32-mips.c (mips_elf_read_ecoff_info): Clear adjust field.
* targets.c (_bfd_relax_section): Take boolean *again argument
rather than asymbol list.
* bfd.c (bfd_relax_section): Change name of fourth argument from
symbols to again.
* reloc.c (bfd_generic_relax_section): Take boolean *again
argument rather than asymbol list. Always return true.
* bout.c: Include genlink.h.
(aligncode, perform_slip): Declare.
(perform_slip): Take BFD argument rather than asymbol list.
Changed all callers. Get the symbols from the BFD. Change the
hash table entry value as well as the symbol value.
(abs32code): Take BFD argument rather than asymbol list. Changed
all callers.
(aligncode): Likewise.
(b_out_relax_section): Take boolean *again argument rather than
asymbol list. Only return false if an error occurred. Set *again
to false. Get symbols from BFD.
* reloc16.c: Include genlink.h.
(bfd_perform_slip): Take BFD argument rather than asymbol list.
Get the symbols from the BFD. Change the hash table entry value
as well as the symbol value.
(bfd_coff_reloc16_relax_section): Take boolean *again argument
rather than asymbol list. Only return false if an error occurred.
Set *again to false. Get symbols from BFD.
* coffcode.h (bfd_coff_backend_data): Change
_bfd_coff_reloc16_estimate to take BFD argument rather than
asymbol list.
(bfd_coff_reloc16_estimate): Corresponding change.
(dummy_reloc16_estimate): Corresponding change.
* libcoff-in.h (bfd_coff_reloc16_relax_section): Change
declaration to take boolean * rather than asymbol list.
(bfd_perform_slip): Change declaration to take BFD rather than
asymbol list.
* coff-h8300.c (h300_reloc16_estimate): Take BFD argument rather
than asymbol list. Changed calls to bfd_perform_slip.
* bfd-in2.h: Rebuilt.
* libbfd.h: Rebuilt.
* libcoff.h: Rebuilt.
* Makefile.in: Rebuilt dependencies.
reloc, used in embedded PIC code.
(mips_adjust_reloc_in): Change sanity check to permit new reloc.
(mips_bfd_reloc_type_lookup): Turn BFD_RELOC_16_PCREL_S2 into
MIPS_R_PCREL16.
counting relocs. Set SEC_RELOC flag for any section which has
relocs.
* linker.c (_bfd_default_link_order): Handle bfd_data_link_order.
* linker.c (_bfd_generic_link_add_symbols): Just call
generic_link_add_symbols.
(_bfd_generic_link_add_symbols_collect): New function, like
_bfd_generic_link_add_symbols but also collect constructors and
destructors by name as collect2 does.
(generic_link_add_symbols): New function, like old
_bfd_generic_link_add_symbols but with collect argument.
(generic_link_add_object_symbols): Take collect argument.
(generic_link_check_archive_element_no_collect): New function.
(generic_link_check_archive_element_collect): New function.
(generic_link_check_archive_element): Take collect argument.
(generic_link_add_symbol_list): Take collect argument.
(_bfd_generic_link_add_one_symbol): Rename constructor argument to
collect.
* libbfd-in.h (_bfd_generic_link_add_symbols_collect): Declare.
* libbfd.h: Rebuilt.
for first character in an extended name.
(_bfd_write_archive_contents): If ar_padchar == '/', then use
"//" as the name of the special archive member holding the
extended name table.
support -Ur in the linker.
* linker.c (generic_link_add_symbol_list): Remove bitsize argument
from call to _bfd_generic_link_add_one_symbol.
(_bfd_generic_link_add_one_symbol): Remove bitsize argument.
Don't pass bitsize to constructor call back. Pass BFD_RELOC_CTOR
instead of bitsize to add_to_set call back.
(_bfd_generic_final_link): Account for link_order relocs when
allocating space for relocations. Handle them in link_order loop.
(_bfd_generic_reloc_link_order): New function.
(_bfd_default_link_order): If a reloc_link_order is seen here,
abort.
(_bfd_count_link_order_relocs): New function.
* libbfd-in.h (_bfd_generic_link_add_one_symbol): Remove bitsize
argument from declaration.
(_bfd_generic_reloc_link_order): Declare.
(_bfd_count_link_order_relocs): Declare.
* libbfd.h: Rebuilt.
* aoutx.h (aout_link_add_symbols): Remove bitsize argument from
call to _bfd_generic_link_add_one_symbol.
(NAME(aout,final_link)): Account for link_order relocs when
allocating space for relocations. Handle them after handling all
input BFDs.
(aout_link_reloc_link_order): New function.
* ecoff.c (ecoff_link_add_externals): Remove bitsize argument from
call to _bfd_generic_link_add_one_symbol.
(ecoff_bfd_final_link): Account for link_order relocs when
allocating space for relocations. Handle them in link_order loop.
(ecoff_link_write_external): Set the storage class of a defined
linker created symbol based on the section it is in. Correct
bfd_link_hash_weak case to use .sc rather than .st.
(ecoff_reloc_link_order): New function.
* coff-alpha.c (alpha_bfd_reloc_type_lookup): Handle
BFD_RELOC_CTOR.
* coff-mips.c (mips_bfd_reloc_type_lookup): Likewise.
som_section_from_subspace_index. Pass in a native SOM symbol.
For executables, iterate through the sections to find out
which contains the symbol's address rather than using the
symbol_info field. (symbol_info has a different meaning for
dynamicly linked executables.)
subspaces too when writing executables. Never request a negative
bss size. Fixes some problems with demand paged executables,
still having problems with pure executables and shared executables.
containing all the private section information which needs
to be copied from input section to output section during
objcopy or strip.
(som_section_data_struct): Remove several fields now in
som_copyable_section_data_struct. Make the space and
subspace dictionaries be pointers (to save space when
only reading objects).
* som.c (bfd_som_set_section_attributes): Now returns a boolean;
some references changed. Allocate a copyable data stucture if
none exists. Store info into the copyable data structure.
(bfd_som_set_subsection_attributes): Likewise.
(som_is_space, som_is_subspace, som_is_container): New functions.
Use these instead of directly accessing private data.
(som_prep_headers): Allocate space and subspace headers here.
Fill in some fields in the space/subspace headers from the
copyable data.
(som_bfd_copy_private_section_data): Only copy the stuff
that we really need to make objcopy and strip work. Allocate
the copy_data structure for the output bfd before copying.
bfd_zalloc for rawptr, because later on we may call free, not
bfd_release, on it.
* bfd.c (struct _bfd): Add cisco_core_struct to tdata union.
* libbfd.c (bfd_read, bfd_seek): Add comments regarding errors.
* cisco-core.c: New file.
* Makfile.in: Change accordingly.
* bfd-in2.h: Rebuilt.
info that must be preserved when running objcopy/strip.
(struct somdata): Add new "exec_data" field and accessor
macro. Add some comments on how the various fields are used.
(som_section_data_struct): Make is_space and is_subspace bitfields.
Delete unused subspace_index. All references now use the
target_index field within the section structure itself.
* som.c (make_unique_section): Delete unused declaration.
(som_bfd_copy_private_bfd_data): New function.
(som_object_setup): Allocate space for and save exec information
that needs to be copied during objcopy/strip.
(som_mkobject): Do not allocate space for a file header here.
It is not used when only reading SOM objects.
(som_prep_headers): Allocate space for and attach a file header
to the output bfd. For executables, use the saved system_id
value rather than trying to guess the right value. Do not abort
wwhen setting file_hdr->entry* for executables.
(som_begin_writing): For executables, set the exec_entry and
exec_flags fields.
(som_copy_private_backend_section_data): Always return a value.
* som.c (SOM_ALIGN): Define.
(som_begin_writing): If writing an executable, initialize all
fields in the exec header to zero. Update fields in the exec
header as sizes of loadable subspaces are computed. Carefully
preserve alignments when building executables. Actually write the
exec after all the fields are filled in.
names, but doesn't quite write compliant extended names yet.
* som.c (som_slurp_extended_name_table): Delete function. The
generic code will handle things correctly.
(som_slurp_armap): Seek to the beginning of the next member.
(normalize): New function.
(som_bfd_ar_write_symbol_stuff): Take the size of the extended
name table into account when computing the file offsets in the
SOM dictionary. Make sure to align to an even boundary.
(som_write_armap): Initialize the checksum to zero.
(ar_maxchars): Fix. Opps.
elf32-hppa.c, elf32-mips.c, linker.c, som.c, sunos.c: If malloc(0)
returns NULL, it is not an error. It's possible that some of
these checks are not necessary (because the size can never be
zero), but putting in the checks is the conservative thing to do
in light of the fact that some of these malloc calls replaced
unchecked alloca calls, in which a zero argument would work fine.
on either the lack of private data or the symbol flags. Do not
munge section symbol names anymore -- they no longer confuse GDB.
(som_begin_writing): Leave space for an exec header if writing
an executable.
(som_slurp_symbol_table): Recognize both forms of section symbol
names "L$0\002" and "$<FOO>$". Change the name of "L$0\002"
section symbols to be the name of the section they represent.
Debugging symbols begin with "L$0\001", not just "L$".
* bfd-in.h (JUMP_TABLE): Add new entries to the jump table
for bfd_copy_private_section_data, bfd_copy_private_bfd_data,
and bfd_is_local_label.
* targets.c: Add new entries to the bfd_target structure.
* bfd.c (bfd_copy_private_bfd_data): New definition.
* section.c (bfd_copy_private_section_data): New definition.
* syms.c (bfd_is_local_label): New definition.
* libbfd-in.h (bfd_generic_is_local_label): Declare.
* libbfd.c (bfd_generic_is_local_label): New function.
* *-core.c: Provide default definitions for new functions in
the target vector which all point to bfd_false.
* aout-target.h, coffcode.h, elf32-target.h elf64-target.h, ieee.c
libaout.h, libecoff.h, nlm-target.h, oasys.c, srec.c, tekhex.c
Default new vectors for copying private backend data to bfd_true.
Default new vector for determining if a symbol is a local label
to bfd_generic_is_local_label.
* som.c (som_bfd_copy_private_section_data): New function.
(som_bfd_is_local_label): New function.
(som_bfd_copy_private_bfd_data): For now default to bfd_true.
* elf32-hppa.c (hppa_elf_is_local_label): New function.
Replace DEFUN and DEFUN_VOID with K&R-style function definition.
Indent some of them to GNU standards.
* aout32.c, archures.c, core.c, cpu-h8300.c, cpu-i960.c,
cpu-m68k.c, cpu-m88k.c, cpu-mips.c, cpu-vax.c, ctor.c, demo64.c,
elf32-hppa.h, gen-aout.c, host-aout.c, init.c, libhppa.h,
libieee.h, liboasys.h, newsos3.c, som.h, stab-syms.c, sunos.c:
Update copyright years.
symbol for the *ABS* section is really a relocation involving
no symbol.
(som_slurp_symbol_table): Do not set BSF_GLOBAL or BSF_EXPORT for
undefined symbols. Correctly distinguish between debugger symbols
and section symbols.
HAS_RELOC based on the object's magic number.
(make_unique_section): Delete function. BFD and its users are
prepared to handle multiple sections with the same name.
(setup_sections): Allocate space on the BFD's obstack to hold
section names. Use bfd_make_setion_anyway rather than the
obsolete make_unique_section.
(som_prep_headers): Choose the correct SOM magic number based
on the BFD's flags.
(som_bfd_fill_in_ar_symbols): Return false, not NULL on error.
is always located at the start of the data section to allow
recovery of the dynamic info from a stripped executable.
* ecoff.c (ecoff_styp_to_sec_flags): Handle STYP_PDATA, STYP_XDATA
and STYP_COMMENT.
cruft (like the #pragma alloca for AIX).
In addition to that problem, the C alloca calls xmalloc, which
means checking for being out of memory can't work right. The
following changes remove all uses of alloca from BFD.
* hosts/solaris2.h: Remove alloca cruft.
* som.c: Replace alloca with a fixed size auto array.
* aoutx.h, elfcode.h, nlmcode.h, bout.c, coff-alpha.c, ecoff.c,
ecofflink.c, elf32-hppa.c, elf32-mips.c, linker.c, reloc.c, som.c,
sunos.c: Replace alloca with malloc and appropriate error checking and
freeing.
* linker.c: Replace alloca with obstack_alloc.
* libbfd.h: Rebuilt.
cruft (like the #pragma alloca for AIX).
In addition to that problem, the C alloca calls xmalloc, which
means checking for being out of memory can't work right. The
following changes remove all uses of alloca from BFD.
* hosts/solaris2.h: Remove alloca cruft.
* som.c: Replace alloca with a fixed size auto array.
* aoutx.h, elfcode.h, nlmcode.h, bout.c, coff-alpha.c, ecoff.c,
ecofflink.c, elf32-hppa.c, elf32-mips.c, linker.c, reloc.c, som.c:
Replace alloca with malloc and appropriate error checking and
freeing.
* linker.c: Replace alloca with obstack_alloc.
* libbfd.h: Rebuilt.
* trad-core.c (trad_unix_core_file_p): A non-zero, not zero,
return from bfd_seek indicates an error.
New macro TRAD_CORE_DSIZE_INCLUDES_TSIZE to replace
TRAD_CORE_STACK_OFFSET.
* hosts/symmetry.h: Define TRAD_CORE_DSIZE_INCLUDES_TSIZE and
TRAD_CORE_USER_OFFSET but not HOST_STACK_OFFSET.
field parameter.
(bfd_som_set_section_attributes): Use unsigned int rather than
unsigned char to avoid GNU-C extensions.
(bfd_som_attach_aux_hdr): Return a boolean to indicate success
or failure rather than aborting on failure.
* som.h (bfd_som_set_section_attributes): Fix prototype to match
som.c changes.
(bfd_som_attach_aux_hdr): Add prototype.
(hppa_som-gen_reloc_type): Likewise.
* elf32-hppa.c: Add a couple casts to make HP compiler happy.
(hppa_look_for_stubs_in_section): Do not return false on failure
until rest of code is ready to handle it. Abort for now.
action in case where caller specified no argument relocation.
(hppa_elf_build_linker_stub): Try again to get the sym_ptr_ptr
right in the original relocation and the stub's relocation.
unused symbols argument.
* elf32-hppa.c (hppa_elf_stub_reloc): Accept asymbol ** rather
than asymbol * for original target symbol. All callers changed.
Set reloc->sym_ptr_ptr appropriately.
(hppa_elf_build_linker_stub): Set reloc->sym_ptr_ptr correctly.
(hppa_elf_look_for_stubs_in_section): No longer need symbols
argument. Use the output symbols when canonicalizing the relocs,
creating them if necessary.
* linker.c (_bfd_generic_link_output_symbols): Do not rebuild/clobber
the output symbols if they already exist.
* targets.c (BFD_SEND, BFD_SEND_FMT): Add debugging versions that
check all the pointer dereferences. Enabled via DEBUG_BFD_SEND.
* bfd-in2.h: Rebuilt.
PARAMize and staticize rest of functions. Delete unused
functions. Delete unused/unnecessary arguments to some functions.
Group static vars together. Abort for bad errors until we have
error code propogation working. Work on spacing and indention.
Add FIXMEs for unresolved problems. Use enums rather than
#defines for lots of things. Merge two functions which build
linker stubs into a single function (so they can easily share a
ton of common code).
* ecoff.c, ecofflink.c, ecoffswap.h, srec.c: Likewise.
* elf32-i386.c: Likewise.
* elfcode.h (bfd_section_from_shdr): Make i unsigned; remove old
#if 0 code.
(elf_write_phdrs): Make i unsigned.
(map_program_segments): Make i and n_left unsigned.
(assign_file_positions_except_relocs): Make i unsigned.
(write_shdrs_and_ehdr): Make count unsigned.
(assign_file_positions_for_relocs): Make i unsigned.
(NAME(bfd,elf_write_object_contents)): Make count unsigned.
(section_from_elf_index): Make index argument unsigned.
* elf32-hppa.h (elf_hppa_tc_symbol): Add new arguments.
(elf_hppa_tc_make_sections): Likewise.
(elf_hppa_final_processing): Add extern decl.
* elf32-hppa.c: First half of major cleanup. Add/cleanup lots of
comments. PARAMize some static functions. Delete unused functions.
Delete unused/unnecessary arguments to many functions. Group
static vars together. Collapse common case statements together
in many places. Use default case when possible instead of listing
each case separately. Abort for bad errors until we get error
code propogation working. Work on spacing and indention problems.
Add FIXMEs for some unresolved problems. Delete hopelessly broken
COMPLEX relocation support (it's never used anyway).
(hppa_elf_rebuild_insn): Delete. Moved into libhppa.h.
(elf_hppa_tc_symbol): Accept and use new arguments (symext chains).
(elf_hppa_tc_make_sections): Likewise.