assume that we can set the GP value and then get the same value,
since it won't be true if the output file is neither ELF nor
ECOFF.
* coff-mips.c (mips_adjust_reloc_in): Don't bother to use
_bfd_get_gp_value here.
(mips_gprel_reloc): Don't assume we can set and get the GP value.
* elf32-mips.c (mips_elf_hi16_reloc): Get gp value from
mips_elf_final_gp.
(mips_elf_lo16_reloc): Likewise.
(mips_elf_final_gp): Add pgp parameter. Set it to the GP value.
Don't require that the BFD be ELF.
(mips_elf_gprel16_reloc): Get gp value from mips_elf_final_gp.
(mips_elf_gprel32_reloc): Likewise.
(mips_elf_relocate_section): Don't assume we can set and get the
GP value.
(mips_elf_finish_dynamic_symbol): Don't bother to use
_bfd_get_gp_value here.
* elf32-mips.c (mips_elf_create_procedure_table): Initialize sv.
Don't change epdr between malloc and free. Be careful not to free
NULL pointers. Zero out the first RPDR.
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.