Reverse the order of processing object files within an executable or

shared library when invoking global constructors and destructors.
For constructors, the object files used to be processed from first
to last; now they're done from last to first.  (Destructors are done
in the opposite order, as required by the C++ standard.)  This makes
us consistent with standard gcc and egcs compilers.  It also
eliminates ordering differences between dynamic and static
executables.

Bump the value of __FreeBSD_version to 400002 to reflect this
change.
This commit is contained in:
jdp 1999-03-13 01:35:44 +00:00
parent 2b06f8a3b7
commit d790b6b749
3 changed files with 8 additions and 8 deletions

View File

@ -22,7 +22,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: crtbegin.c,v 1.1.1.1 1998/03/07 20:27:10 jdp Exp $
* $Id: crtbegin.c,v 1.2 1999/03/12 17:33:27 jdp Exp $
*/
#include <sys/cdefs.h>
@ -41,6 +41,8 @@ do_ctors(void)
fptr *fpp;
for(fpp = ctor_list + 1; *fpp != 0; ++fpp)
;
while(--fpp > ctor_list)
(**fpp)();
}
@ -50,8 +52,6 @@ do_dtors(void)
fptr *fpp;
for(fpp = dtor_list + 1; *fpp != 0; ++fpp)
;
while(--fpp > dtor_list)
(**fpp)();
}

View File

@ -22,7 +22,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $Id: crtbegin.c,v 1.1.1.1 1998/03/07 20:27:10 jdp Exp $
* $Id: crtbegin.c,v 1.2 1999/03/12 17:33:27 jdp Exp $
*/
#include <sys/cdefs.h>
@ -41,6 +41,8 @@ do_ctors(void)
fptr *fpp;
for(fpp = ctor_list + 1; *fpp != 0; ++fpp)
;
while(--fpp > ctor_list)
(**fpp)();
}
@ -50,8 +52,6 @@ do_dtors(void)
fptr *fpp;
for(fpp = dtor_list + 1; *fpp != 0; ++fpp)
;
while(--fpp > dtor_list)
(**fpp)();
}

View File

@ -36,7 +36,7 @@
* SUCH DAMAGE.
*
* @(#)param.h 8.3 (Berkeley) 4/4/95
* $Id: param.h,v 1.40 1999/01/22 08:39:58 eivind Exp $
* $Id: param.h,v 1.41 1999/02/20 23:54:00 jdp Exp $
*/
#ifndef _SYS_PARAM_H_
@ -46,7 +46,7 @@
#define BSD4_3 1
#define BSD4_4 1
#undef __FreeBSD_version
#define __FreeBSD_version 400001 /* Master, propagated to newvers */
#define __FreeBSD_version 400002 /* Master, propagated to newvers */
#ifndef NULL
#define NULL 0