static function, if ${host} = ${target}.
(gld${EMULATION_NAME}_after_open): Call check_ld_so_conf to find a
needed shared library if ${host} = $[target}.
* emulparams/elf32{b,l}4300.sh (MACHINE): Add explicit
architecture number.
* scripttempl/elf.sc: Use $MACHINE definition if present.
* configure.tgt (targ_extra_emuls): Force 4100 build to use same
template as 4300.
(wild_doit): Discard sections with SEC_EXCLUDE set if not doing a
relocateable link. Don't worry about section being NULL, since it
never should be. Don't call init_os unless the section is going
to be added.
(ldlang_add_file): Call section_already_linked for each section.
* ldmain.c (multiple_definition): Don't warn about multiple
definitions in sections which are being discarded.
* ldlang.c (init_os): Fail on an attempt to initialize any section
named DISCARD_SECTION_NAME.
(wild_doit): Discard input sections assigned to an output section
named DISCARD_SECTION_NAME.
* ld.texinfo: Document use of /DISCARD/.
from "null" to "vectors". Create an output section for
vectors. Add comments on how to explicitly place items
in the vector table.
* scripttempl/h8300h.sc: Likewise.
hmse
* ldmain.c (main): Initialize link_info.wrap_hash.
* ldexp.c (fold_name): Use bfd_wrapped_link_hash_lookup in DEFINED
and NAME cases.
* ld.texinfo, ld.1: Document --wrap.
(ldemulation_xfer_type): Add unrecognized_file field.
* ldemul.c (ldemul_unrecognized_file): New function.
* ldlang.c (load_symbols): If a file can not be recognized, call
ldemul_unrecognized_file before trying it as a linker script.
* aix.em (gld${EMULATION_NAME}_unrecognized_file): New static
function.
(gld${EMULATION_NAME}_read_file): Use FOPEN_RT, not "r".
(ld_${EMULATION_NAME}_emulation): Initialize unrecognized_file.
* configure.tgt (m68k-*-linuxaout*, m68k-*-linux*): New targets.
* emulparams/m68klinux.sh: New file.
* emultempl/linux.em (gld${EMULATION_NAME}_before_allocation):
Call bfd_${EMULATION_NAME}_size_dynamic_sections instead of
bfd_linux_size_dynamic_sections.
* Makefile.in (ALL_EMULATIONS): Add em68klinux.o.
(em68klinux.c): New target.
* configure.host (m68*-*-linuxaout*, m68*-*-linux*): New hosts.
Tue Feb 27 12:55:46 1996 Ian Lance Taylor <ian@cygnus.com>
* Makefile.in (ALL_EMULATIONS): Sort into alphabetical order.
Fill in missing entries.
* ldlang.h (lang_input_statement_type): Add whole_archive field.
* ldlang.c (new_afile): Set whole_archive field.
(load_symbols): Check input file specific whole_archive field
rather than global variable.
* ld.texinfo, ld.1: Document --no-whole-archive.
PR 9094.
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.
* configure: Rebuild.
* configure.host: Set RPATH_ENVVAR.
* Makefile.in (RPATH_ENVVAR): New variable.
(check): Use $(RPATH_ENVVAR) rather than LD_LIBRARY_PATH.
Wed Feb 14 18:49:01 1996 Alan Modra <alan@spri.levels.unisa.edu.au>
* configure.in: Redo emulation handling so that each emulation
searches the correct tool directory, based on the target alias.
For example, "configure --enable-targets=m68k-coff i386-linux"
will search /usr/local/i386-linux/lib for linux and
/usr/local/m68k-coff/lib for m68k-coff.
* configure: Rebuild.
* configure.tgt: Add special tdir settings for Linux.
* Makefile.in: Add @TDIRS@. Pass "$(tdir_EMUL)" to ${GENSCRIPTS}
for each eEMUL.c target.
* genscripts.sh: Accept specific alias as 9th argument, and use it
in LIB_PATH.
BFDLIB when linking against a shared library on SunOS.
* configure: Rebuild.
* configure.host: If using a shared BFD library, try to pass a
reasonable -rpath option when linking.
* Makefile.in (BFDLIB): Set to @BFDLIB@.
patches from Alan Modra <alan@spri.levels.unisa.edu.au>:
* configure.in (HLDFLAGS): New substitution.
* configure: Rebuild.
* configure.host: Set HLDFLAGS on SunOS.
* Makefile.in (HLDFLAGS): New variable.
(BFDDEP): New variable.
(BFDLIB): Change to -L../bfd -lbfd.
($(LD_PROG)): Depend upon $(BFDDEP) rathern than $(BFDLIB). Use
$(HLDFLAGS) in link.
(check): Set LD_LIBRARY_PATH in the environment.
* Makefile.in (GENSCRIPTS): Pass @host@ @target@ @target_alias@.
* genscripts.sh: Set host, target and target_alias variables.
Check for native compile by comparing ${target} and ${host}.
* emultempl/elf32.em: Likewise.
* scripttempl/elfmips.sc: Test ${target}, not ${target_alias}.
(phdr): Use phdr_qualifiers rather than opt_hdrs and opt_at.
(phdr_qualifiers): New nonterminal. Add support for FLAGS.
(opt_hdrs, hdr): Remove.
(phdr_val): New nonterminal.
* ldlang.c (lang_new_phdr): Replace hdrs parameter with filehdr
and phdrs parameters. Add flags parameter.
(lang_record_phdrs): Update for changes to lang_phdr. Pass flags
to bfd_record_phdr.
* ldlang.h (struct lang_phdr): Replace hdrs field with filehdr and
phdrs fields. Add flags field.
(LANG_PHDR_FILEHDR, LANG_PHDR_PHDRS): Remove.
(lang_new_phdr): Update declaration.
* ld.texinfo: Document FLAGS.
ANSI_PROTOTYPES is defined. Remove special handling of
WINDOWS_NT. Various indendation fixes.
(vfinfo): Change fmt parameter to const char *.
(info_msg): Write <stdarg.h> version.
(einfo, minfo, finfo): Likewise.
(info_assert): Change file parameter to const char *.
* ldmisc.h (einfo, minfo, info_msg): If ANSI_PROTOTYPES is
defined, use a real prototype.
(info_assert): Change first parameter to be const char *.
mips-idt-ecoff.
* mpw-eppcmac.c: Shortened from mpw-eppcmacos.c.
* mpw-ld.r: Add version resources.
(cfrg): Use symbolic instead of literal name for executable.
(gld${EMULATION_NAME}_parse_args): Handle -unix.
(gld${EMULATION_NAME}_before_allocation): If unix_ld, pass
gc as false and export_defineds as true to size_dynamic_sections.
PR 8606.
(print_statement_list): Renamed from print_statement. All callers
updated.
(print_statement): New function to print just one statement.
(print_{data,reloc,padding}_statement): Don't crash if
output_section == NULL.
(dprint_statement): New function.
* configure.host (m68*-motorola-sysv): Define HOSTING_CRT0 and
HOSTING_LIBS for testing.
(m88*-motorola-sysv3): Define HOSTING_CRT0 and HOSTING_LIBS for
testing.
environment variable LD_RUN_PATH if neither -rpath nor -rpath-link
were used.
(gld${EMULATION_NAME}_before_allocation): Use the environment
variable LD_RUN_PATH if -rpath was not used.
* ld.texinfo, ld.1: Document LD_RUN_PATH.
PR 8428.
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.
m68k4k arch.
(em68k4knbsd.c): New rule.
* configure.tgt: Added support for the NetBSD m68k4k arch.
* genscripts.sh, ldint.texinfo,
emulparams/{a29k,armaoutb,armaoutl,coff_sparc,ebmon29k,gld960,
gld960coff,go32,h8300,h8300h,h8500,h8500b,h8500c,h8500m,h8500s,
hp300bsd,hp3hpux,hppaelf.sh,i386aout,i386bsd,i386coff,i386go32,
i386linux,i386lynx,i386nbsd,lnk960,m68kaout,m68kcoff,m68klynx,
m88kbcs,mipsbig,mipsbsd,mipsidt,mipsidtl,mipslit,news,ns32knbsd,
pc532machaout,rce,riscix,sa29200,sh,shl,sparclynx,sparcnbsd,
st2000,sun3,sun4,vanilla,vax,vsta,w65,z8001,z8002}.sh: Changed
PAGE_SIZE to TARGET_PAGE_SIZE.
* emulparams/m68knbsd.h: Ditto.
(TEXT_START_ADDR, NONPAGED_TEXT_START_ADDR): We have 8K pagesize.
(EXECUTABLE_SYMBOLS): Hardcode __DYNAMIC to zero for the time
being.
* emulparams/m68k4knbsd.sh: New file.
* scripttempl/aout.sc: Expand EXECUTABLE_SYMBOLS if relocating.
(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.
* mac-ld.r: New file, Mac resources.
* mpw-make.sed: New file, edits Makefile.in into MPW syntax.
* mpw-make.in: Remove.
* mpw-eppcmacos.c: Prebuilt version of PowerMac linking script.
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.
* ldexp.h (exp_get_abs_int): Update declaration.
* ldlang.c (print_output_section_statement): Use fprintf_vma to
print return value of exp_get_abs_int.
PR 8142.
(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.
pure-text. Pass true, not 1, to lang_add_entry.
* emultempl/sunos.em (find_assign): New static variable.
(found_assign): New static variable.
(gld${EMULATION_NAME}_before_allocation): Rename local h to hdyn.
If not a relocateable link, and no start symbol was specified on
the command line, and there are any undefined symbols, set
link_info.shared. If link_info.shared is set, set the address of
the .text section to 0x20.
(gld${EMULATION_NAME}_find_assignment): Rename from
gld${EMULATION_NAME}_find_statement_assignment. If find_assign is
set, then just set found_assign based on whether an assignment is
found to find_assign.
(gld${EMULATION_NAME}_get_script): Don't use a special script when
producing a shared library.
* emulparams/sun4.sh (GENERATE_SHLIB_SCRIPT): Remove.
* scripttempl/aout.sc: Remove CREATE_SHLIB tests.
* ldlang.c (entry_from_cmdline): New global variable.
(lang_add_entry): Change cmdline parameter from int to boolean.
Use global entry_from_cmdline rather than function static
from_cmdline.
* ldlang.h (entry_from_cmdline): Declare.
(lang_add_entry): Change declaration of second parameter from int
to boolean.
* ldgram.y: Pass false, not 0, to lang_add_entry.
* ldlex.h (lex_string): Declare.
* ldlex.l (lex_string): Define.
* lexsup.c (parsing_defsym): Define.
(parse_args): In OPTION_DEFSYM case, set lex_string before calling
lex_redirect, and clear it after calling yyparse. Set
parsing_defsym around call to yyparse.
* ldmain.c (main): Set lex_string before calling lex_redirect, and
clear it after calling yyparse.
* ldmisc.c (vfinfo): For %S, handle --defsym arguments and built
in linker scripts correctly.
PR 8092.
* 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.
(warning_callback): Add new parameter symbol. Call
warning_find_reloc to try to find the section and VMA.
(warning_find_reloc): New static function.
* emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation):
Pass NULL as symbol parameter to warning callback.
* 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.