(1) show `-y SYMBOL' with space
(2) weaken multi-target stuff, to avoid false expectations now that
linker now often config'd with only one target
(3) describe -relax support on i960
(4) correct description of hyphen chars in symbols
(5) describe CONSTRUCTORS linker script cmd
Don't require use of fixed C++ header files, so "../gcc/xgcc -B../gcc/" ought
to work for CXX.
In cdtest.exp: Combine "rm" lines. Added some commentary on things still
broken in this test case.
* mpw-config.in: New file, MPW configuration fragment.
* mpw-build.in: New file, MPW build script fragment.
* mpw-make.in: New file, MPW makefile fragment.
(This file is semi-automatically generated from Makefile.in.)
* ldfile.c (slash): If MPW, set to `:'.
* ldlex.l (TRUE_FALSE_ALREADY_DEFINED): If MPW, set this to
prevent redefinition errors.
(lang_size_sections): If the canonical symbols have not already
been read in, read them in before relaxing.
* ldlang.h (relaxing): Removed declaration.
De Muyter).
* configure.in (m68k-motorola-sysv*) New target.
* config/delta68.mt: New file.
* emulparams/delta68.sh: New file.
* scripttempl/delta68.sc: New file.
* Makefile.in (ALL_EMULATIONS): Added em_delta68.o.
(em_delta68.c): New target.
(constructor_callback): New function.
(link_callbacks): Add constructor_callback.
* ldctor.c (struct set_info): Add bitsize field.
(ldctor_add_set_entry): Add bitsize argument.
(ldctor_build_sets): Base the size of the elements of the set on
the bitsize, rather than always using LONG.
* ldctor.h (ldctor_add_set_entry): Add bitsize to declaration.
print it out rather than assuming it is a syntax error.
* ldmisc.h: Change declaration of yyerror.
* ldemul.c, ldwrite.c: Add /*ARGSUSED*/ as appropriate.
(change made to genscripts on July 21...)
This is all it took for linux-native ld to build. It isn't necessarily useful,
particularly as gcc is still configured to pass -m486 and -dll-verbose, which
this ld doesn't parse...
with only one character.
(lprefix_len): Set default to one.
* ldmain.h (lprefix_len): Declare.
* ldsym.c (write_file_locals): Use strncmp rather than a character
comparison for lprefix.
* emultmpl/m88kbcs.em (before_parse): Set lprefix and lprefix_len
correctly.
* emultmpl/hppaosf.em: Include ldexp.h.
(before_parse): Set lprefix and lprefix_len correctly.
different CPU specs that use the same ld_target values.
* configure.in: Add sparc*-*-coff.
* config/coff-sparc.mt, emulparams/coff_sparc.sh: New files.
* Makefile.in (ALL_EMULATIONS): Add em_coff_sparc.o.
(em_coff_sparc.c): Add dependencies and build rules.
* emulparams/elf32mipsb.sh (DATA_ADDR): Define.
(OTHER_READONLY_SECTIONS): Define for .reginfo.
(EXECUTABLE_SYMBOLS): Define for _DYNAMIC_LINK.
* scripttempl/elf.sc: Use EXECUTABLE_SYMBOLS when not relocating.
Move OTHER_READONLY_SECTIONS after all the other readonly
sections. Don't use DATA_ADDR twice.
generation.
(hppaosf_finish, hppaosf_search_for_padding_statements,
hppaosf_create_output_section_statements): New functions in
support of linker stub generation.
(ld_hppaosf_emulation): Redefine to include new
emulation-specific routines.
generation.
(hppaosf_finish, hppaosf_search_for_padding_statements,
hppaosf_create_output_section_statements): New functions in
support of linker stub generation.
(ld_hppaosf_emulation): Redefine to include new
emulation-specific routines.
(open_output): Set it after bfd open succeeds.
* ldmisc.c (vfinfo): Test it.
Changes from Peter Hoogenboom, hoogen@cs.utah.edu:
* ldsym.c (write_file_locals): Set the BSF_FILE flag for object symbols.
* ldemul.c: Support was added to allow emulation-specific processing to occur.
This support was added primarily for linker stub generation in the elf32-hppa
gld.
(ldemul_finish, ldemul_create_output_section_statements): New functions.
* ldemul.h: Support was added to allow emulation-specific processing to occur.
(As described above.) Added finish and create_output_section_statements fields
to ld_emulation_xfer_struct structure.
* ldlang.c: Add calls to emulation-specific routines.
(lang_process): Add call to ldemul_create_output_section_statements function.
(lang_process): Add call to a emulation-specific routine (and
some processing after the call).
* Makefile.in (ALL_EMULATIONS): Added em_alpha.o.
(em_alpha.c): New target; use alpha.sh and alpha.sc.
* config/alphaosf.mh (NATIVE_LIB_DIRS, HOSTING_CRT0): Define.
* config/alpha.mt: New file.
* emulparams/alpha.sh: New file.
* scripttempl/alpha.sc: New file.
* scripttempl/elf.sc: Only use OTHER_READONLY_SECTIONS and
OTHER_READWRITE_SECTIONS if relocating. Shell variables are not
expanded within them.
* config/mipsb-elf32.mt: New file.
* emulparams/elf32mipb.sh: New file.
* Makefile.in (em_elf32mipb.c): New target.
INPUT(), then change the file type to lang_input_file_is_l_enum.
* ldgram.y: In input_list, change lang_input_file_is_file_enum to
lang_input_file_is_search_file_enum so objects brought in using
INPUT() do a path lookup.
* ld.h (flag_is_weak): Define.
* ldlang.c (print_symbol): Mention whether symbol is weak.
(print_input_section): Print weak symbols as globals.
* ldmain.c (refize): Do not zero out BSF_WEAK flag.
(enter_global_ref): Do not warn if a weak symbol redefines a
global symbol. Do not let a weak symbol redefine a common symbol.
(enter_file_symbols): Treat weak symbols as global symbols.
(subfile_wanted_p): Do not pull in an object file from a archive
just to resolve an undefined weak symbol.
* ldmisc.c (vfinfo): Don't needlessly malloc space after a fatal
error; the error might be that malloc has run out of space.
* ldsym.c (write_file_locals): Treat weak symbols as global.
* configure.in (i[34]86-*-sysv4*, i[34]86-*-elf*): New targets;
use i386-elf.
* config/i386v4.mh: New file; set NATIVE_LIB_DIRS to /usr/ccs/lib.
* config/i386-elf.mt: New file; set EMUL to elf_i386.
* emulparams/elf_i386.sh: New file.
* scripttempl/elf.sc: Use ${NOP} as filler (defaults to 0).
* Makefile.in (NATIVE_LIB_DIRS): Define to be empty.
(ALL_EMULATIONS): Add em_elf_i386.o.
(GENSCRIPTS): Pass NATIVE_LIB_DIRS as sixth argument.
(em_elf_i386.c): New target, like other em_*.c targets.
($(LD_PROG)): Pass $(CFLAGS) to $(CC).
* genscripts.sh: Accept NATIVE_LIB_DIRS as sixth argument. If
nonempty, and configured for native, add it to LIB_PATH.
* emultempl/hppaosf.em (ld_hppaosf_emulation): Correct name for PA
ELF emulation is "elf32-hppa" not "elf-big".
(hppaosf_before_parse): Remove unneeded processing of environment variables.
* scripttempl/hppaosf.sc: Include .hppa_linker_stubs sections in
.text segment of output file.
* emulparams/hppaosf.sh (OUTPUT_FORMAT): Use elf32-hppa.
Accept sparc-elf and sparc-solaris configurations (though ../configure.in
should still not configure this directory by default, it's not completely
working).
prototype is being supplied.
(ldmalloc, ldrealloc): Size argument is now size_t.
ldmisc.c (finfo): New function, accepts FILE* argument.
(vfinfo, case 'v'): New format character; displays bfd_vma in hex without
leading zeros.
(vfinfo, cases 'R' and 'C'): Use finfo(%v) when displaying a bfd_vma value,
instead of fprintf(%x) which won't hold a long long value.
(concat, buystring): String lengths are size_t.
(ldmalloc, ldrealloc, xrealloc): Size argument is now size_t.
* genscripts.sh: Put the scripts in the ldscripts directory, not
emulations.
* configure.in (ldscripts): Make, instead of emulations.
* Makefile.in (scriptdir): Take off the "ld" part.
(install, clean, distclean): Use ldscripts, not emulations.
In tests, pass -L., not -Lemulations.
(ldmain.o): Don't pass -DSCRIPTDIR=....
* ldlang.c (lang_process): Add "ldscripts/" to the name of the
default script file.
parallel without colliding on yacc's static file names. Without the
stub rule, make will try to start two yacc's concurrently which
fails because of yacc's static file names.
It wasn't documented (or likely used) and wastes time.
(try_open): If EXTEN is empty, don't try it.
* ldctor.c, lderror.c, ldexp.c, ldfile.c, ldindr.c, ldlang.c,
ldlex.l, ldmain.c, ldmisc.c, ldsym.c, ldver.c, ldwarn.c,
ldwrite.c, lexsup.c, mri.c, relax.c: Replace DEFUN macro calls
with normal function declarations.
* Move *.em to emultempl/*.em. Move *.sh to emulparams/*.sh.
Move *.sc-sh to scripttempl/*.sc.
* {emultempl,emulparams,scripttempl}/README: New files.
* sh.em, st2000.em, z8ksim.em, h8300hms.em, h8500hms.em: Files
removed, replaced with generic.em.
* h8300.sh, h8500.sh, h8300.sc, h8500.sc: Renamed from
h8[35]00hms.s[ch]. Change their contents to omit the "hms".
* *.em (*_get_script): Return script name instead of script contents.
* ldlang.c (lang_process): Change caller.
* ldlex.l, ldgram.y: Recognize -m option.
Check for input files after *all* options in grammar.
* ldmain.c (main): Check for -m options. Add default directory
for -m.
* mkscript.c: File removed.
* genscripts.sh: Take two more parameters, tooldirlib and libdir,
to add to the default LIB_PATH.
Look for input files in the new subdirectories.
Create the scripts in emulations subdirectory and don't filter
them through mkscript.
* configure.in: Make the emulations subdirectory.
* Makefile.in: Account for all of the above changes.
Remove unused .SUFFIXES. Get libgcc.a path with gcc
-print-libgcc-file-name instead of $(libdir)/libgcc.a.
Put CFLAGS last in the compilation rules.
Add -I../bfd to INCLUDES so sysdep.h is found.
* ldfile.c (try_open): If opening without the extension fails,
try with the extension even if -v or -V was given.
had_script is imported (from ldgram.y), not exported.
* ldgram.y (statement_list_opt): New nonterminal, either empty or
statement_list.
(section): Use statement_list_opt, not statement_list.
* m68kcoff.sc-sh: Gather constructors and destructors and define
__CTOR_LIST__ and __DTOR_LIST__ appropriately.
* sa29200.sc-sh: Gather constructors and destructors and define
___CTOR_LIST__ and ___DTOR_LIST__ appropriately.
(mips-idt-ecoff*): Added trailing '*'.
* config/mips-idtl.mt: New file; use EMUL of mipsidtl.
* mipsidtl.sh: New file; like mipsidt.sh, but little endian.
* Makefile.in (ALL_EMULATIONS): Added em_mipsidtl.o.
Conditionalize manual to maintain Cygnus, Hitachi versions in parallel.
(Texinfo conditionals are stable enough to permit this, at last!)
NOTE: @ignore'd passages from earlier versions DELETED; use CVS history
to retrieve if wanted.
gen-doc.texi, h8-doc.texi: manual configuration definitions.
Makefile.in: link config defn (`gen' by default) to configdoc.texi, included
by ld.texinfo
.Sanitize: add gen-doc.texi, h8-doc.texi
* ldindr.c (add_indirect): Keep more information in the alias
symbol chain.
* ldlang.c (wild_doit): Don't inherit NEVER_LOAD section
attribute from an input section.
* ldmain.c (Q_enter_file_symbols): Common section is NEVER_LOAD by
default. (Q_enter_file_symbos): Indirect symbols now are known by
their section, not a special symbol flag.
* ldsym.c (write_file_locals): Indirect symbols aren't local.
(write_file_globals): Write the mapping for an indirect symbol.
* relax.c (build_it): When forced to write a NEVER_LOAD section,
fill it with zeros.
specific emulation.
* mipsidt.sh: New file; emulation for IDT MIPS board.
* Makefile.in (ALL_EMULATIONS): Added em_mipsidt.o.
(em_mipsidt.c): New target. Uses mipsidt.sh and mips.sc-sh.
* config/mips-idt.mt: New file; sets EMUL to mipsidt.
* configure.in (mips-idt-ecoff): New target; uses mips-idt.
* ldlang.c (lang_relocate_globals): avoid possible hang with
undefined but unreferenced symbols.
* relax.c (relax_section): don't complain if the script file isn't
relaxable but -relax is set
* ldlang.c (lang_relocate_globals): avoid possible hang with
undefined but unreferenced symbols.
* relax.c (relax_section): don't complain if the script file isn't
relaxable but -relax is set
* mips.sc-sh: Put .scommon sections into .sbss section.
* ldmain.c (subfile_wanted_p): Preserve section of common symbols,
rather than always putting them in bfd_com_section.
* ldlang.c (lang_common): If a common symbol is not in
bfd_com_section, put in a section of the same name, rather than
always putting it in section COMMON.
* ldmain.c (subfile_wanted_p): If we already have a common
definition of a symbol, don't necessarily pull in an object file
that provides a non-common definition.
* ldlex.l (COMMAND): Accept -EB and -EL command line arguments,
returning OPTION_EB and OPTION_EL. gcc passes these to a MIPS
linker.
* ldgram.y (OPTION_EB, OPTION_EL): New tokens.
(command_line_option): Accept and ignore OPTION_EB and OPTION_EL.
* mips.sc-sh: New file. Ultrix, and hopefully other MIPS ECOFF
targets, linker script.
* mipslit.sh: New file. Little endian MIPS emulation.
* config/mips-lit.mt: New file. Use mipslit emulation.
* configure.in (mips-dec-ultrix*): Use target mips-lit.
* Makefile.in (ALL_EMULATIONS): Added em_mipslit.o.
(em_mipslit.c): New target. Uses mipslit.sh.
* ldwrite.c: Removed perform_relocation, copy_and_relocate, and
write_norel. All linking is now done via write_relax. Call
ldsym_write before calling write_relax.
* relax.c: Added copyright.
(write_relax): Renamed from write_relaxnorel. Added relocateable
argument. seclet_dump renamed to bfd_seclet_link.
* relax.h: Added copyright.
* m68kcoff.sc-sh: define _end as well as end, for consistency with
aout.sc-sh.
* configure.in: accept *-ericsson-ose for any m68k CPU.
* ldwrite.c (write_rel): don't always set SEC_HAS_CONTENTS flag
for each output section.
macro bfd_asymbol_bfd as appropriate.
* Makefile.in: Un-duplicate ldlex.c dependency.
* condigure.in: Replace my_host case table by sourcing
../bfd/configure.host. Allow std-host as the default.
* ldmisc.c: Change logic for C++ name demangling: There is
no initial '_' to remove from stab-derived function names.
* ld.texinfo: new doc.
* ldgram.y, ldlex.l: understand -y<symbol>
* ldmain.c (Q_enter_file_symbols): if had -y, lookup symbol and
print info. (add_ysym): new function.
* ldsym.h: (ldsym_type): new define SYM_Y.
ldlang.h, ldlex.h, ldmain.h, ldmisc.h, ldsym.h, ldver.h, ldwarn.h,
ldwrite.h, relax.h: Replace all uses of EXFUN and PROTO ansi-glue
macros with PARAMS. Recreational cleanup. Update copyrights.
* Support for i386-sysv.
configure.in: check for i386-*-sysv* and i386-*-sco*.
i386coff.sc-sh: rewrote to support SVR3 by default.
ldctor.c (find_constructors): preserve stat_ptr.
ldlang.c (wild_doit): initialize vma and size of new output
section to corresponding input section. This is required for
shared library support.
(lang_size_sections): don't modify vma and size of sections which
are never loaded (for shared libraries).
ldwrite.c (copy_and_relocate): copy the contents of any section
which has contents, not just sections which are loaded (for shared
libraries).