This should not be used directly for building host tools; rather, the top
level bootstrap (to be committed separately) should be used to build the
entire system including this compiler.
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.
* ns32k_gen_operand is no longer needed.
* new function symbolic_reference_mentioned_p (stolen from i386).
* make print_operand dtrt when printing symbolic "constants" in picmode
and abort for the cases that it can't handle (e.g. symbol+offset).
ns32k.h:
* Use NS32K_DISPLACEMENT_P wherever suitable.
* make LEGITIMATE_PIC_OPERAND_P dtrt to make the ns32k_gen_operand hack
unnecessary.
ns32k.md:
* Use general_operand instead of ns32k_gen_operand everywhere.
* replace "rmn" by "g" again.
* make addsi3 dtrt for pic.
The comments in ns32k.md still need some updates.
Thank's again to Ian Dall for his help.
This commits several enhancements done over the last years:
- adddi3 subdi3 insn definitions: Jon Buller (ns32k.md, ns32k.c)
- ffssi2 adddi3 and subdi3 bug fixes: Matthias Pfaller (ns32k.c, ns32k.md)
- movstrsi reimplimentation: Ian Dall (ns32k.c, ns32k.md, ns32k.h)
- 32381 fpu support (extra registers, multiply - add instructions):
Ian Dall (ns32k.c, ns32k.h, ns32k.md)
- divmoddisi: (re) implimentation Ian Dall (ns32k.md)
- use predicate rather than register constraints to allow better code for
non pic case: Ian Dall (ns32k.md, ns32k.c)
- clean up of many macros in ns32k.h: Ian Dall
command line. This behaviour is how it's documented; it should work
that way. Also fixes building a release tree on a -current system (which
bit me with the sparc secr set I built for pk).
> don't try using P_tmpdir (from <stdio.h>, defined as "/var/tmp/" on
> NetBSD), or "/usr/tmp" for temp files - just use "/tmp".
> from ronald khoo in [bin/4224]
+ * stor-layout.c (layout_record): Ignore STRUCTURE_SIZE_BOUNDARY if
+ we are packing a structure. This allows a structure with only
+ bytes to be aligned on a byte boundary and have no padding on a
+ m68k.
Gcc used to create code to create trampolines (for nested functions) for
m68k without properly flushing the caches, leading to segmentation violations
on 68040/68060 systems.
Fixed by:
- importing the gcc 2.7.2.3 trampoline creation code into arch/m68k/m68k.h
- adding the OS-specific code for this into arch/m68k/netbsd.h
These changes have been reflected in gcc2netbsd.
- add /usr/include/objc to mtree
- set libobjc/Makefile INCSDIR=/usr/include/objc
- put to-be-installed includes to libobjc/Makefile into INCS=
- add the Objective-C source files to the appropriate lists.
- as the objc include files are installed now, no need to patch most
of the files.
- add /usr/include/obj/* to src/distrib/comp/mi
The changes have been applied to gcc2netbsd, and this script was then used
to create the new version of the files in libobjc/.
PIC support for GCC/arm.
This fix is untested on platforms other than the ARM and is only enabled
if GCC_27_ARM32_PIC_SUPPORT is defined.
These fixes are only required for GCC 2.7 and will not be needed in 2.8+
Norm Rubin and Richard Earnshaw.
PIC support for ARM will form part of the standard GCC tree from 2.8
onwards.
Also default to building soft-float as the resulting code will be a lot
faster then using emulated floating point instructions.
emit a call _cacheflush() to ensure Icache consistency
after writing trampoline code for lexical closures onto the stack
(i.e., into the Dcache).
GCC 2.x (x <= 7.2.2) emits a call cacehflush(), polluting the user
namespace.
memref_referenced_p(); otherwise there are cases where a later set that changes
the memory location may be moved too early, and thus the new value will be
(incorrectly) used where it should not be.