Skip site navigation (1)Skip section navigation (2)
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>