Subdirectory g++ contains C++ shared library helper routines.
This commit is contained in:
parent
525fbd9129
commit
e5ea148320
|
@ -1,5 +1,5 @@
|
||||||
# $Id: Makefile,v 1.3 1993/12/04 22:39:21 cgd Exp $
|
# $Id: Makefile,v 1.4 1994/01/05 21:05:11 pk Exp $
|
||||||
|
|
||||||
SUBDIR= ${MACHINE_ARCH}
|
SUBDIR= ${MACHINE_ARCH} g++
|
||||||
|
|
||||||
.include <bsd.subdir.mk>
|
.include <bsd.subdir.mk>
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
# $Id: Makefile,v 1.1 1994/01/05 21:05:33 pk Exp $
|
||||||
|
|
||||||
|
CFLAGS+= -DLIBC_SCCS
|
||||||
|
OBJS= c++rt0.o
|
||||||
|
|
||||||
|
all: ${OBJS}
|
||||||
|
|
||||||
|
c++rt0.o: c++rt0.c
|
||||||
|
${CC} ${CFLAGS} -c ${.ALLSRC}
|
||||||
|
${LD} -x -r ${.TARGET}
|
||||||
|
mv a.out ${.TARGET}
|
||||||
|
|
||||||
|
install:
|
||||||
|
install -d -o ${BINOWN} -g ${BINGRP} -m 0755 ${DESTDIR}/usr/lib
|
||||||
|
install ${COPY} -o ${BINOWN} -g ${BINGRP} -m 444 ${OBJS} \
|
||||||
|
${DESTDIR}/usr/lib
|
||||||
|
|
||||||
|
.include <bsd.prog.mk>
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
* CRT module for GNU C++ compiles shared libraries.
|
||||||
|
*
|
||||||
|
* $Id: c++rt0.c,v 1.1 1994/01/05 21:05:37 pk Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
void (*__CTOR_LIST__[2])(void);
|
||||||
|
void (*__DTOR_LIST__[2])(void);
|
||||||
|
|
||||||
|
/* Run all the global destructors on exit from the program. */
|
||||||
|
|
||||||
|
static void
|
||||||
|
__do_global_dtors(void)
|
||||||
|
{
|
||||||
|
unsigned long nptrs = (unsigned long) __DTOR_LIST__[0];
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Some systems place the number of pointers
|
||||||
|
* in the first word of the table.
|
||||||
|
* On other systems, that word is -1.
|
||||||
|
* In all cases, the table is null-terminated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* If the length is not recorded, count up to the null. */
|
||||||
|
if (nptrs == -1)
|
||||||
|
for (nptrs = 0; __DTOR_LIST__[nptrs + 1] != 0; nptrs++);
|
||||||
|
|
||||||
|
/* GNU LD format. */
|
||||||
|
for (i = nptrs; i >= 1; i--)
|
||||||
|
__DTOR_LIST__[i] ();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
__do_global_ctors(void)
|
||||||
|
{
|
||||||
|
void (**p)(void);
|
||||||
|
|
||||||
|
for (p = __CTOR_LIST__ + 1; *p; )
|
||||||
|
(**p++)();
|
||||||
|
}
|
||||||
|
|
||||||
|
extern void __init() asm(".init");
|
||||||
|
|
||||||
|
void
|
||||||
|
__init(void)
|
||||||
|
{
|
||||||
|
static int initialized = 0;
|
||||||
|
|
||||||
|
if (!initialized) {
|
||||||
|
initialized = 1;
|
||||||
|
__do_global_ctors();
|
||||||
|
atexit(__do_global_dtors);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue