(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.
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.
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.
(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.
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.
(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.
* 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.
* 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).
mri.o, relax.o): Indicate dependence on ldgram.h.
* ld.h (strip_symbols_type): Add value STRIP_SOME.
* ldgram.y (OPTION_RETAIN_SYMBOLS_FILE): New terminal token.
(lang_add_keepsyms_file): New function.
* ldlex.l: Handle "-retain-symbols-file".
* ldsym.c (keepsyms_file, kept_syms): New vars.
(process_keepsyms): New functihon; reads file, marks symbols for saving.
(write_file_locals): File symbols should always be kept.
(ldsym_write): Warn about "-retain-symbols-file" overriding "-S" and "-s".
Process retain-symbols file before setting symtab.
* ldsym.h (SYM_KEEP): New flag for ldsym_type flags.
(keepsyms_file, kept_syms): Declare them.
* ldmain.c (main): Non-fatal errors should still cause non-zero exit status
even with -r.
Added initial support for the z8k
* z8ksim.em, z8ksim.sc-sh, z8ksim.sh: new files
* configure.in, Makefile.in: modified to reflect above
* ldlang.c (lang_check): when linking conflicting architectures,
make the output file reflect at least one of the bad inputs.
please let me know, or plug them in yourself.
Wed Sep 9 11:52:58 1992 Ian Lance Taylor (ian@cygnus.com)
* Makefile.in, m68kcoff.sh, m68kcoff.sc-sh, config/m68k-coff.mt:
added m68k-coff emulation mode, stolen from a29k emulation.
Almost certainly wrong, but perhaps better than sun3.
Also fixed an error message in configure.in so that it started with
'***' like the other error messages do.
abs_output_section is what is required.
* ldwrite.c (ldwrite): use malloc to allocate the largest space
used, and pass that down.
* relax.c,relax.h (write_relaxnorel): use the passed malloc area rather
than alloca.
Tue Aug 18 13:41:36 1992 Ian Lance Taylor (ian@cygnus.com)
* configure.in: accept all m68K family members.
* Makefile.in: always create installation directories.
chars in filenames
* ldexp.c (exp_unop): pass down abs_output_section - now can have
unary -ve constants.
* ldlang.c (lang_finish): warn when an entry symbol supplied on
the command line can't be found.
* ldlang.c (lang_output_section_statement_lookup): initilize new
field. (wild_doit): if new field is not set, then stop output
section from being loadable.
(lang_enter_output_section_statement): set the field from the
NOLOAD keyword
* ldgram.y: new synax for NOLOAD. Removes a shift/reduce too.
* h8300hms.sc-sh, h8300hms.em: get -r right.
(size_input_section): maintain the delta information.
* ldlang.h: add new field to struct to contain delta info.
* relax.c (relax_section): complain if input not relaxable.
* ldlex.l : add '_', ',' and '$' to chars which can appear at the
start of a filename
* ldexp.c: lint
* ldlang.c(open_output): set the target arch and machine as soon
as we can. (lang_size_sections): use new macros for setting vma
* ldwrite.c: lint
rules, since these are used when building a distribution.
* Makefile.in (ldlex.c): Don't re-direct output, since that
leaves a bogus output files if it fails.
* ldexp.c, ldlang.c, ldmain.c: reflect this
* ldver.c: bump version to 1.97.1
* ldindr.c (add_indirect): when an edict declaring an indirect
symbol is found, make sure that any ideas about the symbol being
common are changed if it now known to be defined.
* ldmain.c (linear_library): complain once if archive isn't
ranlibbed.
* ldlang.h, ldlang.c: make room for and initialize the complain
once field.
bfd too #.
* ldexp.c, ldlang.c: now build memory shape tree in obstacks
rather than with raw malloc, makes it easier to track where memory
is going.
* ldsym.h, ldsym.c: create obstack for all global symbols too.
* ldwrite.c (ldwrite): moved malloc so only used when needed.
* sa29200-sc.sh: added support for .lit, data1 and data2 sections.
magic to converts scripts, since that is now handled
by genscripts.sh and the *.sc-sh scipt generators.
* config.h: Remove a bunch of macros defining emulations
and targets. This becomes one less file to edit when
adding emulations or targets.
* ldemul.h (struct ld_emulation_xfer_struct): Add
emulation_name and target_name fields.
* ldemul.c, ldemul.h: Define some default functions used
by most emulations (and remove from the *.em scripts).
* ldemul.c (ldemul_choose_target): Search the new
ld_emulations array using a loop (instead of a hardwired
nested if statement).
Define the ld_emulation from the automatically-geenrated
ldemul-list.h. This means you no longer have to edit ldemul.c
to add a new emulation.
* ldmain.c: Replace {GLD,LNK}960_EMULATION_NAME by
their expansions, since the former no longer exist.
* PORTING: A very rough first draft of a porting guide.
* ldmain.c: quit using exit
* *.sc: use *(COMMON) rather than [COMMON]
* ldlex.l, lexsup.c: much thinking moved from .l and put into .c,
to allow preprocessing of .l file.
* Makefile.in: New ldlex.l mangling
* ldexp.c (fold_binary): perform expressions with % and / in
integer.
* ldfile.c (open_a): open archives on VMS in a special way
* lderror.c: forgot to check in from a long while ago
to be "-".
* ldsym.c, ldlang.c: remember that size of a section is dependent on
whether or not relaxing has been done.
* ldmain.c: don't open a map file if it doesn't have a name
* relax.c: all the brains have moved into bfd.
* ldwrite.c: ammend comment
* Makefile.in: punt "fundamental" mode because it breaks my emacs
macros. install using INSTALL_PROGRAM and INSTALL_DATA. remove
spaces following hyphens, bsd make can't cope. added
standards.text support and made it look like all the other
makefiles.
* configure.in: configure now runs entirely in objdir so make file
existence checks against ${srcdir}. Mark this directory as
target dependent.
Thu Dec 5 22:46:16 1991 K. Richard Pixley (rich at rtl.cygnus.com)
* Makefile.in: idestdir and ddestdir go away. Added copyrights
and shift gpl to v2. Added ChangeLog if it didn't exist. docdir
and mandir now keyed off datadir by default.
parameter, a format, and an arg pointer, and rename it to
vfinfo(). Write info() in terms of new vfinfo().
New einfo() is the same as info(), except it writes to stderr.
* ldemul.c, ldexp.c, ldlang.c, ldlnk960.c, ldmain.c, ldwrite.c,
ldmisc.c: Replace "error" calls to info() by new einfo().
* ldtemplate: Add (yet another) script to get for -n or -N
options. (These need different alignment than ZMAGIC files.)
* Makefile.in: Add stuff for new foo.xn scripts.
These are generated by replacing "ALIGN(0x...00)" by ".".
by default. Don't the WP_TEXT and D_PAGED flags of
output_bfd here; it's too late, so set it when output_bfd
is created (in ldlang.c). Also fix setting of EXEC_P flag
* ldlang.c (ldlang_open_output): Set output_bfd->flags here.
* ldlang.c: Remove some duplicate extern declarations.
* ldgram.y: Fixes to -N and -n options.
* Makefile.in: Recognize upper case letters in sed script
to remove assignments from script files.
* ldtemplate: Don't assukme that -N or -n options
imply use of -r script.
* mkscript.c: Tweaking to correctly handle \n and \\ in input.