GC all of the backward branch code (which wasn't used).
Separate the a.out stuff into a separate .h file.
Some other random cleanup.
Leave the arm_preserved_register() hack for now.
(find_dummy_reload): New parameter earlyclobber. If set then don't
use IN for the reload if it also appears elsewhere in the insn. All
callers changed.
This fixes problems compiling editors/emacs and games/abuse on the Shark.
Generate .ctors and .dtors sections which contain the contructor and
deconstructor function addresses.
Use .init and .fini sections to call the functions to call those functions.
Include the crtbegin and crtend object files which perform those calls.
maintainers which implements gnu c++ exception dynsums while
preserving compatiblity with Irix5 linker. (by no longer identyifying
particular sections that appear inside the .dynsym section).
1. Change linkspec to not pass -nostdlib to binutils ld, since on mips,
ld parses "-nostdlib" as a set of short options which produce
nonworking binaries.
2. Turn off ASM_OUTPUT_DEF definition: the egcs iris6.h says that
our old definition (from gcc 2.7.2.2 iris5.h isnt really whats
wanted here.
3. Turn off SET_ASM_OP (which defaults to .set) to stop
dwarf2out.c from emitting debug(?) info for C++ using ".set",
since both gas and mips as use .set to control assembler
optimizations, not for equating labels. From iris6.h.
and nonzero -G values are incompatible with PIC.
4. Set default GVALUE (for -G) to 0; this target always produces PIC
by default, and on mips, PIC is incompatible with `small' segment.
5. Set TARGET_DEFAULT to enable "-mdebuga" to defeat
GO_IF_LEGITIMATE_ADDRESS "smarts". GO_IF_LEGITIMATE_ADDRESS pretends
that mips supports an address mode of constant + register.
For constants larger than 16 bits, that relies on assembler fixups
via $at. egcs 1.1 (expr.c delta 1.76) may break up those addresses
such that the backend cannot output them as offsets in load or store
instructions anymore; no other patterns match so egcs coredumps.
[XXX not perfect since gotslot are allocated on a per-symbol basis but
not a per-symbol & addend tuple. This makes impossible to have separate
GOT entries to ___sF (stdin), ___sF+88 (stdout), and ___sF+176 (stderr)]