Commit Graph

11 Commits

Author SHA1 Message Date
ross 2d62241cb9 Reorganization of crtbegin/crtend.
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.
2001-05-11 22:44:14 +00:00
pk 015fada66a Assign my copyrights to TNF. 1998-09-05 13:20:07 +00:00
thorpej 4d2424a47a We need <sys/param.h> because sysident.h requires the `NetBSD' constant. 1998-07-27 21:46:49 +00:00
mycroft f5e7ca07dd These all need types.h. 1998-07-25 04:45:04 +00:00
mycroft d005dcbce0 Don't pull in param.h (and therefore don't pull in unistd.h). 1998-07-25 04:34:12 +00:00
ross cbd1bb578a Sigh, don't make global calls in repeated sharedlib components. It blows
away the dynamic loader.
1998-05-06 20:45:54 +00:00
ross ab2c05e5a3 Eliminate incorrect gcc-generated cross-section bsr's by calling the static
constructor/destructor dispatcher via a function pointer protected from
constant propagation. Also, create (presently unused) .S files that solve
the same problem and in addition allow in-line .init section and .fini
section code. This is too big a mod for a 3.2 pullup, however.
1998-05-06 05:32:08 +00:00
cgd c0ac8bae67 GC alpha's ECOFF_TOOLCHAIN make variable, and related bits. Nobody
should be using an ECOFF toolchain on NetBSD/alpha any more.
1998-03-28 00:50:41 +00:00
jtc 6351dbac24 Rename initialization and termination functions from __init() and
__fini() to _init() and _fini().  The linker sets the DT_INIT and
DT_FINI .dynamic section entries based on the latter names.
1998-03-27 09:11:33 +00:00
cgd 5e25db4c59 pull in the sysident.h from ld.so, for NetBSD PT_NOTE generation 1997-03-21 05:47:28 +00:00
cgd cccb7a88b4 Reimplement in C, adding ELF support. if compiled with -DECOFF_COMPAT
(currently the default), then it compiles on both an ECOFF toolchain
and on an ELF toolchain (but w/o support for dynamic linking or C++
constructors & destructors).  If compiled without -DECOFF_COMPAT, it
supports statically- or dynamically-linked ELF binaries (and shared
libraries).
1996-09-12 16:59:01 +00:00