* deffile.h: New file; direct support for PE DLLs
* deffilep.y: New file; direct support for PE DLLs
* emultempl/pe.em: add direct support for PE DLLs
* configure.tgt: allow target-specific extra files
* configure.in: allow target-specific extra files
* ldlang.c (lang_add_assignment): return the assignment so that
one can change the value later based on the object files (pe-dll
DEF files do this)
* ldint.texinfo: add section for emulation walkthrough
* emultempl/pe.em (sort_by_file_name): Remove.
(sort_by_section_name): Remove.
(sort_sections_1, sort_sections): Remove.
(gld_${EMULATION_NAME}_before_allocation): Don't call
sort_sections.
(hold_section, hold_section_name): New static variables.
(hold_use, hold_text, hold_rdata, hold_data, hold_bss): Likewise.
(gld_${EMULATION_NAME}_place_orphan): Rewrite. Look for a good
place to put the section. Align the section. Sort the input
sections by name.
(gld_${EMULATION_NAME}_place_section): New static function.
ldlang_add_undef.
(gld_${EMULATION_NAME}_after_parse): New static function.
(ld_${EMULATION_NAME}_emulation): Use new after_parse function
rather than after_parse_default.
(gld${EMULATION_NAME}_find_so): Skip the directory name when
searching for ".so.".
(gld${EMULATION_NAME}_search_dir): Make sure that the library name
has a version number, and that only version numbers follow .so.
if final link.
* emultempl/pe.em (sfunc): Renamed to sort_by_file_name.
(sort_by_section_name, sort_sections_1): New functions.
(sort_sections): Only sort by file name sections in .idata.
Add "Grouped Sections" support.
(gld${EMULATION_NAME}_place_orphan): Rewrite to support Grouped
Sections.
(gld${EMULATION_NAME}_place_section): Delete.
* scripttempl/pe.sc (.text,.data,.rdata): Add *(.foo\$).
(.CRT,.rsrc): Rewrite to use Grouped Section support.
static function, if ${host} = ${target}.
(gld${EMULATION_NAME}_after_open): Call check_ld_so_conf to find a
needed shared library if ${host} = $[target}.
the SONAME if it is available.
(gld${EMULATION_NAME}_stat_needed): Use the SONAME, not the
filename, when checking for conflicting library versions. Don't
assume that the suffix is only numbers and dots.
new local variable special_sections, and pass it to
size_dynamic_sections. Look through the results, and move the
sections around in the mapping so that they are defined correctly.
(import_files): Make static.
(struct export_symbol_list): Define.
(export_symbols): New static variable.
(gld${EMULATION_NAME}_parse_args): Handle an initial -b option
correctly. Call read_file for an export file.
(gld${EMULATION_NAME}_before_allocation): Call
bfd_xcoff_export_symbol for each export symbol, rather than
calling read_file for each export file.
(gld${EMULATION_NAME}_read_file): For an export file, make the
exported symbols undefined, and store them on the export_symbols
list.
* emultempl/pe.em (gld_${EMULATION_NAME}_parse_args):
Don't hang if last option is unrecognised.
(gld_${EMULATION_NAME}_set_symbols): Insert created
symbols into ABS output section.
(gld${EMULATION_NAME}_after_open): New static function.
(gld${EMULATION_NAME}_before_allocation): Call find_relocs.
(gld${EMULATION_NAME}_find_relocs): New static function.
(gld${EMULATION_NAME}_find_exp_assignment): New static function.
(ld_${EMULATION_NAME}_emulation): Use new after_open function.
* scripttempl/aix.sc: Use CONSTRUCTORS in .data.
* ldctor.c (struct set_info): Move definition into ldctor.h.
(struct set_element): Likewise.
(sets): Make non-static.
(ldctor_add_set_entry): Add name parameter. Save it in the new
set element.
(ldctor_build_sets): Avoid being called twice. Pass set element
name to lang_add_reloc.
* ldctor.h (struct set_info): Move definition here from ldctor.c.
(struct set_element): Likewise. Add new field name.
(sets): Declare.
(ldctor_add_set_entry): Declare new name parameter.
* ldwrite.c (build_link_order): Don't insist that either name or
section be NULL in a lang_reloc_statement.
* ldmain.c (add_to_set): Pass NULL to ldctor_add_new_set_entry for
new name parameter.
(constructor_callback): Pass name to ldctor_add_new_set_entry for
new name parameter.
directory searching code into gld${EMULATION_NAME}_search_dir.
(gld${EMULATION_NAME}_search_dir): New static function, extracted
from gld${EMULATION_NAME}_find_so.
(global_needed, global_found): New static variables.
(gld${EMULATION_NAME}_after_open): New static function.
(gld${EMULATION_NAME}_search_needed): New static function.
(gld${EMULATION_NAME}_try_needed): New static function.
(gld${EMULATION_NAME}_check_needed): New static function.
(ld_${EMULATION_NAME}_emulation): Use new after_open function.
* ld.texinfo, ld.1: Mention -rpath-link on SunOS.
(rs6000-*-aix*): New target; use aixrs6.
* emulparams/aixppc.sh, emulparams/aixrs6.sh: New files.
* emultempl/aix.em: New file.
* scripttempl/aix.sc: New file.
* Makefile.in (ALL_EMULATIONS): Add eaixppc.o and eaixrs6.o.
(eaixppc.c, eaixrs6.c): New targets.
(gld${EMULATION_NAME}_try_needed): Call stat_needed to make sure
that the file has not already been included under another name.
(gld${EMULATION_NAME}_stat_needed): New static function.
* emulparams/sun4.sh (GENERATE_SHLIB_SCRIPT): Define.
* emultempl/sunos.em (gld${EMULATION_NAME}_get_script): Use the
shared library script when appropriate.
* scripttempl/aout.sc: If CREATE_SHLIB is set, start the .text
section at SIZEOF_HEADERS.
* configure.tgt: Add i386lelf to targ_extra_emuls for
i[345]86-*-linuxaout* and i[345]86-*-linuxoldld. For
i[345]86-*-linux*, set targ_emul to i386lelf, and add elf_i386 to
targ_extra_emuls.
* emulparams/i386lelf.sh: New file, a copy of elf_i386.sh.
* emultempl/elf32.em: If TARGET_IS_i386lelf, use autoconf
recommended mechanism to define DIR and struct dirent.
(libcmp): New static function use only when TARGET_IS_i386lelf.
(gld${EMULATION_NAME}_open_dynamic_archive): Likewise.
* Makefile.in (ALL_EMULATIONS): Add ei386lelf.o
(ei386lelf.c): New target.
* configure.host: New file.
* configure.tgt: New file.
* aclocal.m4: New file.
* configure: New file, built by autoconf.
* acconfig.h: New file.
* config.h.in: New file, built by autoheader.
* sysdep.h: New file.
* ld.h: Incorporate old contents of config.h.
* config.h: Remove.
* Makefile.in: Various changes for new configure script. Also:
(CC_FOR_BUILD): Remove.
(ldmain.o): Don't bother to ensure that EMUL is non-empty.
(dep.sed): Use @SRCDIR@, not @srcdir@.
* dep-in.sed: Use @SRCDIR@, not @srcdir@.
* genscripts.sh: Create ldscripts if it does not exist.
* ldemul.c, lexsup.c, mpw-emipsidt.c: Don't include "config.h".
* mpw-esh.c, emultemp/*.em: Likewise.
* ldmain.c: Likewise. Include <ctype.h>. Don't try to set
HAVE_SBRK here.
* config/*.mt, config/*.mh: Remove.
* emultempl/{armpe.sc, i386pe.sc}: Deleted.
* emultempl/pe.sc: New file performs generic PE support and sorts
archive members.
* emulparams/{armpe.sh,i386pe.sh}: Use new file.
* scripttempl/{armpe.sc, i386pe.sc}: Deleted
* scripttempl/pe.sc: New.
* Makefile.in: Use new files.
b