does and to watch out for side effects. Add FIXME for memory leaks.
Fix comment about checking for matching byte order. Preserve
pointer to old tdata (if any), and restore it if we don't match
file with target vector. If we are going to use goto's, use them
consistently and maintainably.
* nlmcode.h (nlm_object_p): Expand comments about leaked memory
to note that the problem is even more serious than just leaked
memory. Replace goto with more traditional return.
for 32 bits nor for 64.
Tue Jun 15 14:38:32 1993 Michael Meissner (meissner@osf.org)
* libelf.h (elf_hash): Change declaration to bfd_elf_hash, since
that is what is in elf.c.
* elfcode.h (elf_write_object_contents): Don't drop core if
elf_symbol_from returns a NULL pointer when processing a non-elf
symbol, use a 0 size instead.
Tue Jun 15 14:38:32 1993 Michael Meissner (meissner@osf.org)
* elfcode.h (elf_hash): Delete macro mapping elf_hash to
bfd_elf32_hash, since the hash table is independent of the 32/64
bit system.
(BFD32_BACKENDS): Don't include elf.o here.
(ofiles): Delete references to ofiles2 and ofiles3.
(do_clean): Delete ofiles.
(BFDIN_H): Changed references to $(srcdir)/bfd-in2.h.
(stmp-bfd.h): Use bfd.h-new as temporary name, not bfd.h2.
(headers): Use bfd-in2.h-new as temporary name, not bfd.h-new.
of nlm_slurp_symbol_table as boolean, not pointer.
* nlmcode.h (nlm_canonicalize_reloc): Test return value
of nlm_slurp_reloc_fixups as boolean, not pointer.
(nlm_mangle_relocs_func): New macro.
* nlm32-i386.c (nlm_i386_write_reloc): Rewrote correctly.
(nlm_i386_mangle_relocs): New function.
* nlmcode.h (nlm_compute_section_file_positions): Move all common
symbols into the .bss section.
(nlm_set_section_contents): Call the mangle_relocs function.
(nlm_write_object_contents): Treat a reloc against any defined
symbol as an internal reloc. Fix bug in external reloc counting.
Get the offset and debugging type right for .bss symbols. Only
output debugging symbols for defined symbols.
using printf.
* coff-z8k.c (rtype2howto): Likewise.
* coffcode.h (dummy_reloc16_extra_cases): Likewise.
* elf32-i386.c (TRACE): Likewise.
* hp300hpux.c (convert_sym_type, swap_std_reloc_in): Likewise.
* rs6000-core.c (rs6000coff_get_section_contents): Likewise.
* coffgen.c (coff_print_symbol): Do an fprintf to the file
argument rather than using printf.
objdump -r.
* coffswap.h: Added macros used when accessing several fields;
default is the same as before.
(coff_swap_aouthdr_{in,out}): Handle the Alpha ECOFF fields.
* coff-alpha.c: Defined macros to use the right sizes in
coffswap.h.
* libecoff.h: Backend information is now in target vector, not
BFD. Start of backend information is COFF backend information.
* coff-alpha.c, coff-mips.c: Changed accordingly.
* ecoff.c (ecoff_mkobject): New function.
(ARMAP_START): Changed into backend information, since Alpha uses
a different name.
(ecoff_slurp_armap): Don't overlay archive header.
* bfd.c: Include libcoff.h.
* ecoffswap.h: New file for ECOFF swapping functions which differ
only slightly for different targets.
* libecoff.h: Added prototypes for ecoff.c functions.
(ecoff_backend_data): New structure.
(ecoff_tdata): Added backend_data field. Changed external data
pointers to be PTR rather than to a particular struct.
(ecoff_symbol_struct): Moved in from coff-mips.c.
* coff-alpha.c, coff-mips.c: Moved common functions into ecoff.c.
Added ECOFF backend structures. Include ecoffswap.h.
* coff-msym.c: Removed; superseded by ecoffswap.h.
* bfd.c: Include coff/internal.h.
* Makefile.in (BFD_LIBS): Removed coff-mips.o and coff-msym.o.
Added ecoff.o.
(BFD64_BACKENDS): Added coff-alpha.o.
(CFILES): Removed coff-msym.c. Added ecoff.c.
(bfd.o): Added dependency on $(INCDIR)/coff/sym.h.
(coff-mips.o): Added dependency on ecoffswap.h and coff/ecoff.h.
(ecoff.o, coff-alpha.o): New targets.
(coff-msym.o): Removed target.
* libnlm.h: Added some more prototypes.
(struct nlm_relent): New structure.
(nlmNAME(symbol_type)): Added rcnt and relocs fields.
(struct nlm_obj_tdata): Added new fields: nlm_symbols,
nlm_text_low, nlm_data_low, nlm_reloc_fixups,
nlm_reloc_fixup_secs.
(struct nlm_backend_data): New structure, with accessor macros.
* nlmcode.h: Use NLM_HIBIT rather than MSB.
(nlm_object_p): Set SEC_RELOC for .text and .data. Don't set
SEC_DATA for .bss. Set HAS_RELOC and HAS_SYMS for abfd. Set the
architecture.
(nlm_swap_fixed_header_out, nlm_swap_variable_header_out,
find_nonzero, nlm_swap_auxiliary_headers_out): New outbound
swapping functions.
(nlm_get_symtab_upper_bound, nlm_slurp_symbol_table): Include
external references in symbol table as undefined symbols.
(nlm_get_symtab, nlm_slurp_symbol_table): Fill in alocation
argument in get_symtab rather than in slurp_symbol_table.
(nlm_slurp_symbol_table): Save symbol information in tdata.
(nlm_print_symbol): New function.
(nlm_slurp_reloc_fixups, nlm_get_reloc_upper_bound,
nlm_canonicalize_reloc): New functions to read relocs.
(nlm_compute_section_file_positions, nlm_set_section_contents,
nlm_external_reloc_compare, nlm_write_object_contents): New
functions to create NLM files.
* nlm-target.h: Define all the nlm functions here either as
default values or in terms of nlmNAME. Use JUMP_TABLE(nlm). Set
the backend_data field to TARGET_BACKEND_DATA.
* nlm32-gen.c, nlm64-gen.c: Don't define function macros here;
they are now in nlm-target.h.
(TARGET_BACKEND_DATA): Define as NULL.
* nlm.c (nlm_mkobject): Do allocate the tdata field.
(nlm_set_arch_mach): New function.
* targets.c: Added nlm32_i386_vec.
* Makefile.in (BFD32_BACKENDS): Added nlm32-i386.o.
(CFILES): Added nlm32-i386.c.
(nlm32-gen.o, nlm64-gen.o): Depend on nlm-target.h.
(nlm32-i386.o): New target.
* nlm{32,64}-gen.c (JUMP_TABLE_INIT): New macro that works with
older cpp's, that don't do additional replacement on the JUMP_TABLE
macro's argument.
* nlm-target.h (JUMP_TABLE_INIT): Use new macro in place of
JUMP_TABLE macro.
(elf_write_phdrs): Use precomputed e_phoff rather than making assumptions.
(elf_build_phdrs): Disabled, for now.
(assign_file_position_for_section): Don't change file offset for SHT_NOBITS.
(assign_file_positions_for_symtab_and_strtabs): New function.
(struct seg_info): New type.
(map_program_segments): New function.
(assign_file_positions_except_relocs): For executables, leave section headers
&c for last, and properly align all sections with flag SHF_ALLOC set.
(prep_headers): No longer abort when EXEC_P is set.
(write_shdrs_and_ehdr): Deleted all code relating to program segments.
(various): Deleted some unused code, and debugging "malloc(0)" calls.
(write_relocs): Cache value of last symbol looked up, to save
time if the symbol is referred to repeatedly.
(elf_fake_sections): Check only SEC_RELOC flag, not number of relocs.
(assign_section_numbers): Likewise.