Date: Thu, 01 Feb 1996 17:17:41 EST From: Christopher Provenzano <proven@MIT.EDU> To: Peter Wemm <peter@jhome.dialix.com> Cc: John Polstra <jdp@polstra.com>, nate@sri.MT.net, CVS-committers@freebsd.org, cvs-lib@freebsd.org, proven@MIT.EDU Subject: Re: cvs commit: src/lib/csu/i386 crt0.c Message-ID: <9602012217.AA07409@yaz-pistachio.MIT.EDU> In-Reply-To: Your message of "Thu, 01 Feb 1996 17:30:23 %2B0800." <199602010930.RAA13154@jhome.DIALix.COM>
next in thread | previous in thread | raw e-mail | index | archive | help
Since the bootstrapping problem is a basic mess. Might I suggest using what pthreads has done. Make a c++ constructor in the library that is called when the program is initialized. It removes the problem of having to deal with crt0.o at all. Here is how pthreads does it. init.cc extern "C" void pthread_init (void); struct __pthread_init_hack_t { __pthread_init_hack_t () { pthread_init (); } }; __pthread_init_hack_t __pthread_init_hack_x; char __pthread_init_hack = 42; In any one file that is always linked in with the library eg signal.c /* This will force init.o to get dragged in; if you've got support for C++ initialization, that'll cause pthread_init to be called at program startup automatically, so the application won't need to call it explicitly. */ extern char __pthread_init_hack; char *__pthread_init_hack_2 = &__pthread_init_hack; CAP
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?9602012217.AA07409>