dt_name.
(elf_dt_name): Rename from elf_dt_needed_name.
* elf.c (bfd_elf_set_dt_needed_name): Use elf_dt_name, not
elf_dt_needed_name.
(bfd_elf_get_dt_soname): New function.
* elflink.h (elf_link_add_object_symbols): Use elf_dt_name, not
elf_dt_needed_name. Save the SONAME back in elf_dt_name.
* bfd-in.h (bfd_elf_get_dt_soname): Declare.
* bfd-in2.h: Rebuild.
substitute CFLAGS.
* configure: Rebuild.
* configure.host: Don't set information which autoconf should
figure out, namely CC, CFLAGS, LDFLAGS, AR, and RANLIB.
* Makefile.in (CFLAGS): Set to -g, not @CFLAGS@.
* Makefile.in ($(srcdir)/bfd-in2.h): Rename target from bfd-in2.h.
($(srcdir)/libbfd.h): Rename from libbfd.h.
($(srcdir)/libcoff.h): Rename from libcoff.h.
* ieee.c (ieee_write_expression): Only use an R variable for a
local symbol. Don't output a zero offset. Handle a zero address.
(SRC_MASK, PCREL_OFFSET): Define based on KEEPMINUSPCININST.
(rel32_howto, rel16_howto, rel8_howto): Use SRC_MASK and
PCREL_OFFSET.
(parse_expression): Don't try to handle multiple occurrences of a
P variable. Handle I variables differently from X variables. Fix
the order of minus expressions.
(ieee_slurp_external_symbols): Generate an I variable for an NN
record. Fix handling of ATI and ATX records.
(ieee_slurp_sections): Only set minimal section attributes.
Adjust them later, based on the section contents.
(ieee_object_p): Read in the file until just after the ME record.
Call ieee_slurp_section_data to set the section flags.
(do_one): Add iterations parameter. Only repeat the first load
item. Set the section and file reloc flags.
(ieee_slurp_section_data): Set section flags. Pass iterations to
do_one.
(ieee_canonicalize_reloc): Handle I variables.
(do_with_relocs): Only emit relocation size when necessary.
Increase MAXRUN to 127. Change ov to be assigned, and take
src_mask and pcrel_offset into account.
(ieee_write_data_part): Skip sections that are not loaded.
(ieee_write_external_part): Don't output optional last entry of WX
records.
(ieee_write_me_part): Make setting of me_record neater.
(ieee_generic_stat_arch_elt): Get the size of an archive element.
* syms.c (stt): Add entries for zerovars, vars, and code.
* elfcode.h (validate_reloc): New static function.
(write_relocs): Call validate_reloc for non ELF relocs.
* elfxx-target.h (elf_symbol_leading_char): Define if not defined.
(TARGET_BIG_SYM): Use elf_symbol_leading_char.
(TARGET_LITTLE_SYM): Likewise.
* config.bfd (m68*-*-psos*): New target.
* i386msdos.c: Remove some #if 0 code.
(msdos_write_object_contents): Don't include empty sections in the
size computation, regardless of their address.
(do_with_relocs): If EXEC_P is set and there are no relocs, use a
simple number for the section address, rather than an expression.
Limit the number of bytes between relocs to MAXRUN.
(ieee_write_me_part): Set me_record to the file offset after the
start address.
(ieee_write_processor): New static function.
(ieee_write_object_contents): Use ieee_write_processor.
* elf32-m68k.c (elf_m68k_relocate_section): For a R_68K_RELATIVE
relocation put the addend both in the reloc entry and the data.
(elf_m68k_finish_dynamic_symbol): Likewise. Mask out marker in
GOT offset value.
* elf32-m68k.c (elf_m68k_relocate_section): If -Bsymbolic, resolve
a R_68K_PCxx reloc against a defined global symbol directly.
(elf_m68k_check_relocs): Don't count such a reloc.
* elf32-m68k.c (elf_m68k_check_relocs): Don't record a symbol with
a PLTxx reloc as dynamic. Disallow PLTxxO reloc against a local
symbol for now, otherwise always record the symbol as dynamic.
(elf_m68k_adjust_dynamic_symbol): If a symbol with a PLTxx reloc
is not referenced by a dynamic object, and we are not making a
shared object, then don't make a PLT entry. If we do make a PLT
entry, make sure the symbol has been recorded as dynamic.
pass an appropriate -rpath option. Use the make variable SONAME
as the shared library soname, rather than computing it here. On
SunOS, build stamp-tshlink in place of $(SHLINK).
* Makefile.in (SONAME): New variable.
($(SHLINK)): Make a link to the transformed name, as well.
(stamp-tshlink): New target.
(install): Skip stamp-tshlink during install.
Alan Modra <alan@spri.levels.unisa.edu.au>:
* configure.in: Add AC_ARG_ENABLE for shared and commonbfdlib.
New substitutions: ALLLIBS, PICFLAG, SHLIB, SHLIB_CC,
SHLIB_CFLAGS, COMMON_SHLIB, PICLIST, SHLINK.
* configure: Rebuild.
* configure.host: If --enable-shared, adjust shared library stuff
based on the host. If the host is SunOS, and the linker supports
-rpath, set HLDFLAGS to use it.
* Makefile.in (ALLLIBS): New variable.
(PICFLAG, SHLIB, SHLIB_CC, SHLIB_CFLAGS): New variables.
(COMMON_SHLIB, SHLINK): New variables.
(.c.o): If PICFLAG is set, compile twice, once PIC, once normal.
(STAGESTUFF): Remove variable.
(all): Depend upon $(ALLLIBS) and @PICLIST@ rather than
$(TARGETLIB).
(stamp-ofiles): New target, like old ofiles target, but build
using a temporary file and move-if-change, and touch stamp-ofiles
when done.
(ofiles): Just depend upon stamp-ofiles.
(stamp-piclist, piclist): New targets.
($(SHLIB), $(SHLINK)): New targets.
(targets.o, archures.o): Build twice if PICFLAG is set.
(do_mostlyclean): Remove pic/*.o.
(do_clean): Remove stamp-ofiles, $(SHLIB), $(SHLINK), piclist, and
stamp-piclist.
(do_distclean): Remove pic and stamp-picdir.
(install): Install shared libraries.
($(OFILES)): Depend upon stamp-picdir.
(stamp-picdir): New target.
* elf.c (_bfd_elf_link_hash_newfunc): Set elf_link_hash_flags to
ELF_LINK_NON_ELF.
* elflink.h (elf_link_add_object_symbols): Reset ELF_LINK_NON_ELF
flag for a newly defined symbol.
(NAME(bfd_elf,record_link_assignment)): Likewise.
(elf_adjust_dynamic_symbol): If ELF_LINK_NON_ELF is set, try to
set the DEF or REF_REGULAR flags correctly.
a PLT32 reloc as dynamic.
(elf_i386_adjust_dynamic_symbol): If a symbol with a PLT32 reloc
is not referenced by a dynamic object, and we are not making a
shared object, then don't make a PLT entry. If we do make a PLT
entry, make sure the symbol has been recorded as dynamic.
symbol or section symbols if stripping all symbols and this is not
a relocateable link. Don't output the symbol string table if
there are no symbols.
(elf_link_flush_output_syms): Don't do anything if there are no
symbols to flush.
* ecoff.c (struct extsym_info): Define.
(_bfd_ecoff_bfd_final_link): Pass a pointer to struct extsym_info
to ecoff_link_write_external.
(ecoff_link_write_external): Accept a struct extsym_info pointer.
Strip symbols when appropriate.
* syms.c (BSF_OBJECT): Define.
(bfd_print_symbol_vandf): Print 'O' for BSF_OBJECT.
* bfd-in2.h: Rebuild.
* elfcode.h (elf_slurp_symbol_table): Set BSF_OBJECT for an
STT_OBJECT symbol.
* elf.c (swap_out_syms): Only set type to STT_OBJECT if BSF_OBJECT
is set.
copying relocs into a shared object, treat a defined global symbol
as a local symbol.
* elf32-m68k.c (elf_m68k_relocate_section): Likewise.
* elf32-mips.c (mips_elf_relocate_section): Likewise.
* elf32-sparc.c (elf32_sparc_relocate_section): Likewise.
entry_section fields. Add sntoc and snentry fields.
* libcoff.h: Rebuild.
* coffcode.h (coff_mkobject_hook): Initialize sntoc and snentry,
not toc_section and entry_section (the COFF file does not have any
sections at this point).
(coff_write_object_contents): Set o_snentry and o_sntoc from
snentry and sntoc rather than entry_section and toc_section.
* coff-rs6000.c (xcoff_copy_private_bfd_data): Copy sntoc and
snentry, not toc_section and entry_section.
* xcofflink.c (bfd_xcoff_size_dynamic_sections): Don't set
entry_section from hentry.
(xcoff_link_input_bfd): If a defined symbol has XCOFF_ENTRY set,
set snentyr.
(xcoff_link_input_bfd): Set sntoc, not toc_section.
(xcoff_write_global_symbol): Get toc_section from sntoc, rather
than using toc_section directly.
of flags, only flags used are controlled by mach number. Bump up
output file mach number to highest of input file mach numbers.
(elf32_sparc_object_p): Watch for EF_SPARC_SUN_US1.
(elf32_sparc_final_write_processing): Set EF_SPARC_SUN_US1 if v8plusa.
Also, delete v8plus sanitization.
.lib section to work even if the entire section contents are
written at once. From Gvran Uddeborg <gvran@uddeborg.pp.se> and
Robert Lipe <robertl@arnet.com>.
dynamic section, if there is one.
* elf-bfd.h (struct elf_size_info): Add swap_dyn_in field.
(bfd_elf32_swap_dyn_in): Change type of second parameter to PTR.
(bfd_elf64_swap_dyn_in): Likewise.
* elfcode.h (elf_swap_dyn_in): Change type of second parameter to
PTR.
(NAME(_bfd_elf,size_info)): Initialize swap_dyn_in field.
support, from Kazumoto Kojima <kkojima@info.kanagawa-u.ac.jp>.
* elf-bfd.h (struct elf_backend_data): Add type_change_ok field.
(struct elf_backend_data): Remove
elf_backend_create_program_headers field. Add
elf_backend_additional_program_headers and
elf_backend_modify_segment_map fields.
* elfxx-target.h (elf_backend_type_change_ok): Define if not
defined.
(elf_backend_additional_program_headers): Likewise.
(elf_backend_modify_segment_map): Likewise.
(elf_backend_create_program_headers): Don't define.
(elfNN_bed): Change to account for field changes.
* elf.c (assign_file_positions_for_segments): Call new
modify_segment_map backend function. Don't call old
create_program_headers backend function.
(get_program_header_size): Call additional_program_headers rather
than create_program_headers.
* elflink.h (elf_link_add_object_symbols): Initialize
type_change_ok from new backend field.
(elf_link_output_extsym): Don't warn if _rld_new_interface is
defined.
(elf_reloc_link_order): Treat a reloc against a defined symbol as
a reloc against the appropriate section.
(struct elf_obj_tdata): Rename ppc_flags_init field to flags_init.
(elf_flags_init): Rename from elf_ppc_flags_init.
* elf32-ppc.c (ppc_elf_set_private_flags): Use elf_flags_init, not
elf_ppc_flags_init.
(ppc_elf_copy_private_bfd_data): Likewise.
(ppc_elf_merge_private_bfd_data): Likewise.
If there is a SEC_DEBUGGING section, get the contents of the debug
information part from it.
(ieee_set_section_contents): Store the contents of a SEC_DEBUGGING
section in memory.
(ieee_write_object_contents): Check ieee_write_debug_part return.
(bfd_target): Rename byteorder_big_p to byteorder, and change it
from boolean to enum bfd_endian. Change header_byteorder_big_p
correspondingly.
* bfd-in.h (bfd_big_endian, bfd_little_endian): New macros.
(bfd_header_big_endian, bfd_header_little_endian): New macros.
* bfd-in2.h: Rebuild.
* All targets: Change initialization of byteorder and
header_byteorder to use enum bfd_endian values rather than
booleans.
* All files: Change all references to byteorder_big_p and
header_byteorder_big_p to use new bfd_*_endian macros.
errors rather than calling abort. Also:
(ieee_write_twobyte): Remove; change callers to call existing
ieee_write_2bytes function.
(ieee_write_expression): Don't output the section twice when
outputting a local symbol. Don't emit an extraneous zero if there
is only one term.
(ieee_slurp_sections): Set the lma as well as the vma.
(ieee_archive_p): Use bfd_alloc_grow rather than an obstack.
field.
(bfd_xcoff_size_dynamic_sections): Add export_defineds parameter.
(xcoff_build_ldsyms): If export_defineds is set, set XCOFF_EXPORT
for all symbols.
* bfd-in.h (bfd_xcoff_size_dynamic_sections): Update declaration.
* bfd-in2.h: Rebuild.
(ihex_object_p): Permit types 4 and 5.
(ihex_set_section_contents): Remove check for out of range
addresses.
(ihex_write_object_contents): Generate types 4 and 5.
(bfd_zmalloc): Return PTR, not char *. Take size_t, not
bfd_size_type.
* libbfd-in.h (bfd_malloc, bfd_realloc): Declare.
(bfd_zmalloc): Change declaration.
* libbfd.h: Rebuild.
* Many files: Use bfd_malloc and bfd_realloc rather than malloc
and realloc. Don't set bfd_error_no_memory if they fail.