2d62241cb9
o Primary mod: alpha and i386 code for .init and .fini section fallthroughs o Actual fallthru is not yet enabled, see csu/{alpha,i386_elf}/Makefile o When enabled, should fix bin/12865 & should fix at least one WINE bug, see http://www.winehq.com/hypermail/wine-devel/2001/05/0021.html o Also, removed the function pointer hack put in to prevent gcc from incorrectly attempting to do short calls over section boundaries, on some architectures, rather, simply simply move ctors() and dtors() into .init and .fini. Other notes. o Our crtbegin.c and crtend.c were completely in C, despite the fact that .init and .fini section fallthroughs require machine code. These modules implement the gnu ctors/dtors mechanism directly, eliminating in part the need for the elf .init/.fini section fallthrough. However, if we ever want to use the gnu-provided constructor support, we need to do the fallthrough, at least one program (WINE) apparently uses the feature independently, and other compilers may depend on the mechanism. o It is amusing that the previous NetBSD _init() and _fini() were put into the .init and .fini sections, because nothing is gained over plain .text if they don't fall through. Cargo cult! o Other elf ports will need to copy the alpha and i386 example mods. |
||
---|---|---|
.. | ||
alpha | ||
arm26 | ||
arm32 | ||
c++ | ||
common_aout | ||
common_elf | ||
i386 | ||
i386_elf | ||
m68k | ||
m68k_elf | ||
mips | ||
ns32k | ||
powerpc | ||
sh3 | ||
sh3_elf | ||
sparc | ||
sparc64 | ||
sparc_elf | ||
vax | ||
vax_elf | ||
Makefile |