* Makefile.am (ALL_EMULATIONS): Remove pe-dll.o and deffilep.o.
(ALL_EMUL_EXTRA_OFILES): New variable. Put them here instead.
* configure.in: Set EMUL_EXTRA_OFILES to $(ALL_EMUL_EXTRA_OFILES)
if configuring with all targets.
* configure, Makefile.in, aclocal.m4: Rebuild.
* emultempl/pe.em (pe_enable_stdcall_fixup): Make static.
(pe_dll_do_default_excludes): Removed, unused.
(pe_def_file, pe_dll_export_everything, pe_dll_kill_ats,
pe_dll_stdcall_aliases): Don't initialize them, this file may be
compiled more than once.
* pe-dll.c (pe_def_file, pe_dll_export_everything,
pe_dll_do_default_excludes, pe_dll_kill_ats,
pe_dll_stdcall_aliases): Define and initialize them here instead.
(generate_reloc): Fix allocation of reloc_addresses array to use
bfd_vma instead of unsigned long. Fix element size in qsort call.
(reloc_sort): Compare pointers to bfd_vma instead of unsigned
long.
* ldemul.c (ldemul_recognized_file): new function, new hook
* ldint.texinfo: document new hook.
* ldlang.c (load_symbols): call recognized_hook for all objects we
do recognize, in case the emulation needs to handle them
specially. PE DLLs use this.
* pe-dll.c (pe_dll_generate_def_file): take out hack and debug
printfs
* emultempl/pe.em (gld_i386_recognized_file): new function
(gld_i486_unrecognized_file): take out hack
they link in the right order.
(make_tail): same here
(pe_process_import_defs): use sequential names for bfds to ensure
proper link order.
(pe_implied_import_dll): new function; handles linking directly
against DLLs by simulating IMPORTS directives. * emultempl/pe.em
(gld_i386pe_before_parse): hack bfd to not recognize .dll files
via bfd_pe_dll_not_recognized_hack
pe_process_import_defs
* pe-dll.c (pe_dll_generate_def_file): calculate BASE from
pe_data, only print if actually set. Print version only if
set.
(save_relocs): save relocs for both input and output.
(make_one): support internal/external different names.
(pe_dll_generate_implib): support new make_one
(pe_process_import_defs): new function; handles IMPORT
directives in .def files.
* deffile.h: add hint member.
* pe-dll.c (pe_dll_generate_implib): New function with helpers;
generates the import library directly from the export table.
(fill_edata): remember the actual hint for the import library.
symbols, clean up old code.
(pe_dll_generate_def_file): don't crash if pe_def_file is NULL
* emultempl/pe.em (gld_i386_parse_args): add
(en/dis)able-stdcall-fixups
(pe_fixup_stdcalls): warn about stdcall fixups
(gld_i386_unrecognized_file): make exported symbols undefs so that
archive members get pulled in
* 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
* lexsup.c (ld_options): Change text of -O to Optimize output file".
(parse_args): Set link_info.optimize based on -O argument.
* ldmain.c (main): Initialize link_info.optimze to false.
* ld.texinfo: Describe -O option.
* ld.1: Likewise.
dyanmic linking.
* scripttempl/v850.sc: Add KEEP attribute to .init,
.fini, .dtors and .ctors. Add .data and .text
wildcards to support section garbage collection.
* ld-elfvers/vers.exp: Run tests on alpha-linux.
* ld-elfvers/*.sym, ld-elfvers/*.dsym: Adjust patters to match
Alpha's use of st_other.
1998-09-27 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
* ld-elfvers/vers.exp (vers16, vers16a): New tests.
* ld-elfvers/{vers16.*, vers16a.*}: New files.