* 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.