Date: Mon, 15 Jan 1996 09:53:27 -0800 (PST) From: John Polstra <jdp> To: CVS-committers, cvs-lib Subject: cvs commit: src/lib/csu/i386 c++rt0.c Message-ID: <199601151753.JAA27198@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
jdp 96/01/15 09:53:27 Modified: lib/csu/i386 c++rt0.c Log: Check the count in the first word of __CTOR_LIST__ before executing the loop that invokes the static constructors. That makes it safe to link c++rt0.o into any shared library, even one that does not have any static constructors. Formerly, doing that would cause a bus error. If the library has no static constructors, __CTOR_LIST__ comes out as a simple 4-byte COMMON region, and it does not have the usual NULL word that terminates the list of constructors. This caused the old code to "call" a garbage address via the non-existent entry __CTOR_LIST__[1]. The analogous code that invokes the static destructors was already safe. This change is fully backward-compatible. Reviewed by: dfr@render.com (Doug Rabson) Revision Changes Path 1.4 +12 -4 src/lib/csu/i386/c++rt0.c
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199601151753.JAA27198>