summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.inc13
-rw-r--r--gnu/lib/Makefile2
-rw-r--r--gnu/lib/csu/Makefile56
-rw-r--r--lib/csu/alpha/Makefile8
-rw-r--r--lib/csu/alpha/crt1.c1
-rw-r--r--lib/csu/amd64/Makefile6
-rw-r--r--lib/csu/amd64/crt1.c1
-rw-r--r--lib/csu/amd64/crti.S15
-rw-r--r--lib/csu/amd64/crtn.S9
-rw-r--r--lib/csu/common/crtbegin.c19
-rw-r--r--lib/csu/common/crtbrand.c51
-rw-r--r--lib/csu/i386-elf/Makefile6
-rw-r--r--lib/csu/i386-elf/crt1.c1
-rw-r--r--lib/csu/i386-elf/crti.S15
-rw-r--r--lib/csu/i386-elf/crtn.S9
-rw-r--r--lib/csu/ia64/Makefile1
-rw-r--r--lib/csu/ia64/crt1.c1
17 files changed, 158 insertions, 46 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1
index c03c592..8ba6c03 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -650,6 +650,7 @@ includes:
.if exists(${.CURDIR}/lib/csu/${MACHINE_ARCH})
cd ${.CURDIR}/lib/csu/${MACHINE_ARCH}; ${MAKE} beforeinstall
.endif
+ cd ${.CURDIR}/gnu/lib/csu; ${MAKE} beforeinstall
cd ${.CURDIR}/lib/libalias; ${MAKE} beforeinstall
cd ${.CURDIR}/lib/libatm; ${MAKE} beforeinstall
cd ${.CURDIR}/lib/libdevstat; ${MAKE} beforeinstall
@@ -745,7 +746,7 @@ _libkeycap= usr.sbin/pcvt/keycap
.endif
libraries:
-.for _lib in ${_csu} lib/libmd lib/libcrypt ${_secure_lib} ${_kerberosIV_lib} \
+.for _lib in ${_csu} gnu/lib/csu lib/libmd lib/libcrypt ${_secure_lib} ${_kerberosIV_lib} \
${_kerberos5_lib} gnu/lib/libgcc lib/libcom_err ${_libm} lib/libncurses \
lib/libopie lib/libradius lib/libskey lib/libtacplus lib/libutil \
lib/libz lib gnu/lib \
diff --git a/gnu/lib/Makefile b/gnu/lib/Makefile
index a577f54..e2accac 100644
--- a/gnu/lib/Makefile
+++ b/gnu/lib/Makefile
@@ -1,6 +1,6 @@
# $FreeBSD$
-SUBDIR= libdialog libgcc libgcc_r libgmp libmp libregex libreadline
+SUBDIR= csu libdialog libgcc libgcc_r libgmp libmp libregex libreadline
.if !defined(NO_CXX)
SUBDIR+= libstdc++
diff --git a/gnu/lib/csu/Makefile b/gnu/lib/csu/Makefile
new file mode 100644
index 0000000..3a94ab8
--- /dev/null
+++ b/gnu/lib/csu/Makefile
@@ -0,0 +1,56 @@
+# $FreeBSD$
+
+GCCDIR= ${.CURDIR}/../../../contrib/gcc.295
+.PATH: ${GCCDIR}
+
+SRCS= crtstuff.c tm.h
+OBJS= crtbegin.o crtend.o
+SOBJS= crtbegin.So crtend.So
+CFLAGS+= -I${GCCDIR}/config -I. -DIN_GCC \
+ -finhibit-size-directive -fno-inline-functions \
+ -fno-exceptions -fno-omit-frame-pointer
+NOMAN= true
+NOPIC= true
+NOPROFILE= true
+INTERNALLIB= true
+CLEANFILES+= tm.h
+
+CRTS_CFLAGS= -DCRTSTUFFS_O ${PICFLAG}
+
+all: ${OBJS} ${SOBJS}
+
+crtbegin.o: crtstuff.c tm.h
+ ${CC} ${CFLAGS} -g0 -DCRT_BEGIN \
+ -c -o ${.TARGET} ${GCCDIR}/crtstuff.c
+
+crtbegin.So: crtstuff.c tm.h
+ ${CC} ${CFLAGS} -g0 -DCRT_BEGIN ${CRTS_CFLAGS} \
+ -c -o ${.TARGET} ${GCCDIR}/crtstuff.c
+
+crtend.o: crtstuff.c tm.h
+ ${CC} ${CFLAGS} -g0 -DCRT_END \
+ -c -o ${.TARGET} ${GCCDIR}/crtstuff.c
+
+crtend.So: crtstuff.c tm.h
+ ${CC} ${CFLAGS} -g0 -DCRT_END ${CRTS_CFLAGS} \
+ -c -o ${.TARGET} ${GCCDIR}/crtstuff.c
+
+# KEEP THIS IN SYNC with src/gnu/usr.bin/cc/cc_tools/Makefile !!
+tm.h:
+ echo '#include "${MACHINE_ARCH}/${MACHINE_ARCH}.h"' > ${.TARGET}
+.if ${MACHINE_ARCH} == "i386"
+ echo '#include "${MACHINE_ARCH}/att.h"' >> ${.TARGET}
+.endif
+ echo '#include <freebsd.h>' >> ${.TARGET}
+ echo '#include "${MACHINE_ARCH}/freebsd.h"' >> ${.TARGET}
+.if ${MACHINE_ARCH} == "i386"
+ echo '#include "${MACHINE_ARCH}/perform.h"' >> ${.TARGET}
+.endif
+
+realinstall:
+.for file in ${OBJS} ${SOBJS}
+ ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
+ ${file} ${DESTDIR}${LIBDIR}/${file:S/.So$/S.o/}
+.endfor
+
+.include <bsd.lib.mk>
diff --git a/lib/csu/alpha/Makefile b/lib/csu/alpha/Makefile
index d215568..519446e 100644
--- a/lib/csu/alpha/Makefile
+++ b/lib/csu/alpha/Makefile
@@ -2,11 +2,11 @@
# $FreeBSD$
#
-SRCS= crt1.c crtbegin.c crtend.c
-OBJS= crt1.o crtbegin.o crtend.o
+SRCS= crt1.c
+OBJS= crt1.o
OBJS+= gcrt1.o
-SOBJS= crtbegin.So crtend.So
-CFLAGS+= -Wall -Wno-unused
+CFLAGS+= -Wall -Wno-unused \
+ -I${.CURDIR}/../common
NOMAN= true
NOPIC= true
NOPROFILE= true
diff --git a/lib/csu/alpha/crt1.c b/lib/csu/alpha/crt1.c
index 095effc..40c0898 100644
--- a/lib/csu/alpha/crt1.c
+++ b/lib/csu/alpha/crt1.c
@@ -38,6 +38,7 @@
#endif
#include <stdlib.h>
+#include "crtbrand.c"
struct Struct_Obj_Entry;
struct ps_strings;
diff --git a/lib/csu/amd64/Makefile b/lib/csu/amd64/Makefile
index 70e66b1..2082a70 100644
--- a/lib/csu/amd64/Makefile
+++ b/lib/csu/amd64/Makefile
@@ -2,11 +2,11 @@
# $FreeBSD$
#
-SRCS= crt1.c crtbegin.c crtend.c crti.S crtn.S
+SRCS= crt1.c crti.S crtn.S
OBJS= ${SRCS:N*.h:R:S/$/.o/g}
OBJS+= gcrt1.o
-SOBJS= crtbegin.So crtend.So
-CFLAGS+= -elf -Wall -fkeep-inline-functions
+CFLAGS+= -elf -Wall -fkeep-inline-functions \
+ -I${.CURDIR}/../common
LDFLAGS+= -elf
NOMAN= true
NOPIC= true
diff --git a/lib/csu/amd64/crt1.c b/lib/csu/amd64/crt1.c
index 0ee0702..ad1d25f 100644
--- a/lib/csu/amd64/crt1.c
+++ b/lib/csu/amd64/crt1.c
@@ -31,6 +31,7 @@
#include <stddef.h>
#include <stdlib.h>
+#include "crtbrand.c"
typedef void (*fptr)(void);
diff --git a/lib/csu/amd64/crti.S b/lib/csu/amd64/crti.S
index 536d2c2..82b262f 100644
--- a/lib/csu/amd64/crti.S
+++ b/lib/csu/amd64/crti.S
@@ -25,7 +25,14 @@
* $FreeBSD$
*/
-/*
- * This file is not used any more. It will go away as soon as the gcc
- * linker specs have been updated accordingly.
- */
+ .section .init,"ax",@progbits
+ .align 4
+ .globl _init
+ .type _init,@function
+_init:
+
+ .section .fini,"ax",@progbits
+ .align 4
+ .globl _fini
+ .type _fini,@function
+_fini:
diff --git a/lib/csu/amd64/crtn.S b/lib/csu/amd64/crtn.S
index 536d2c2..361ab1e 100644
--- a/lib/csu/amd64/crtn.S
+++ b/lib/csu/amd64/crtn.S
@@ -25,7 +25,8 @@
* $FreeBSD$
*/
-/*
- * This file is not used any more. It will go away as soon as the gcc
- * linker specs have been updated accordingly.
- */
+ .section .init,"ax",@progbits
+ ret
+
+ .section .fini,"ax",@progbits
+ ret
diff --git a/lib/csu/common/crtbegin.c b/lib/csu/common/crtbegin.c
index 7693d2b..172ee4b 100644
--- a/lib/csu/common/crtbegin.c
+++ b/lib/csu/common/crtbegin.c
@@ -82,21 +82,4 @@ _fini(void)
(*p_do_dtors)();
}
-/*
- * Special ".note" entry specifying the ABI version. See
- * http://www.netbsd.org/Documentation/kernel/elf-notes.html
- * for more information.
- */
-static const struct {
- int32_t namesz;
- int32_t descsz;
- int32_t type;
- char name[sizeof ABI_VENDOR];
- int32_t desc;
-} abitag __attribute__ ((section (ABI_SECTION))) = {
- sizeof ABI_VENDOR,
- sizeof(int32_t),
- ABI_NOTETYPE,
- ABI_VENDOR,
- __FreeBSD_version
-};
+#include "crtbegin.c"
diff --git a/lib/csu/common/crtbrand.c b/lib/csu/common/crtbrand.c
new file mode 100644
index 0000000..aef659a
--- /dev/null
+++ b/lib/csu/common/crtbrand.c
@@ -0,0 +1,51 @@
+/*-
+ * Copyright 1996, 1997, 1998, 2000 John D. Polstra.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+
+#define ABI_VENDOR "FreeBSD"
+#define ABI_SECTION ".note.ABI-tag"
+#define ABI_NOTETYPE 1
+
+/*
+ * Special ".note" entry specifying the ABI version. See
+ * http://www.netbsd.org/Documentation/kernel/elf-notes.html
+ * for more information.
+ */
+static const struct {
+ int32_t namesz;
+ int32_t descsz;
+ int32_t type;
+ char name[sizeof ABI_VENDOR];
+ int32_t desc;
+} abitag __attribute__ ((section (ABI_SECTION))) = {
+ sizeof ABI_VENDOR,
+ sizeof(int32_t),
+ ABI_NOTETYPE,
+ ABI_VENDOR,
+ __FreeBSD_version
+};
diff --git a/lib/csu/i386-elf/Makefile b/lib/csu/i386-elf/Makefile
index 70e66b1..2082a70 100644
--- a/lib/csu/i386-elf/Makefile
+++ b/lib/csu/i386-elf/Makefile
@@ -2,11 +2,11 @@
# $FreeBSD$
#
-SRCS= crt1.c crtbegin.c crtend.c crti.S crtn.S
+SRCS= crt1.c crti.S crtn.S
OBJS= ${SRCS:N*.h:R:S/$/.o/g}
OBJS+= gcrt1.o
-SOBJS= crtbegin.So crtend.So
-CFLAGS+= -elf -Wall -fkeep-inline-functions
+CFLAGS+= -elf -Wall -fkeep-inline-functions \
+ -I${.CURDIR}/../common
LDFLAGS+= -elf
NOMAN= true
NOPIC= true
diff --git a/lib/csu/i386-elf/crt1.c b/lib/csu/i386-elf/crt1.c
index 0ee0702..ad1d25f 100644
--- a/lib/csu/i386-elf/crt1.c
+++ b/lib/csu/i386-elf/crt1.c
@@ -31,6 +31,7 @@
#include <stddef.h>
#include <stdlib.h>
+#include "crtbrand.c"
typedef void (*fptr)(void);
diff --git a/lib/csu/i386-elf/crti.S b/lib/csu/i386-elf/crti.S
index 536d2c2..82b262f 100644
--- a/lib/csu/i386-elf/crti.S
+++ b/lib/csu/i386-elf/crti.S
@@ -25,7 +25,14 @@
* $FreeBSD$
*/
-/*
- * This file is not used any more. It will go away as soon as the gcc
- * linker specs have been updated accordingly.
- */
+ .section .init,"ax",@progbits
+ .align 4
+ .globl _init
+ .type _init,@function
+_init:
+
+ .section .fini,"ax",@progbits
+ .align 4
+ .globl _fini
+ .type _fini,@function
+_fini:
diff --git a/lib/csu/i386-elf/crtn.S b/lib/csu/i386-elf/crtn.S
index 536d2c2..361ab1e 100644
--- a/lib/csu/i386-elf/crtn.S
+++ b/lib/csu/i386-elf/crtn.S
@@ -25,7 +25,8 @@
* $FreeBSD$
*/
-/*
- * This file is not used any more. It will go away as soon as the gcc
- * linker specs have been updated accordingly.
- */
+ .section .init,"ax",@progbits
+ ret
+
+ .section .fini,"ax",@progbits
+ ret
diff --git a/lib/csu/ia64/Makefile b/lib/csu/ia64/Makefile
index fc98857..41c0aa8 100644
--- a/lib/csu/ia64/Makefile
+++ b/lib/csu/ia64/Makefile
@@ -7,6 +7,7 @@ OBJS= crt1.o crtbegin.o crtend.o
OBJS+= gcrt1.o
SOBJS= crtbegin.So crtend.So
CFLAGS+= -Wall -Wno-unused
+CFLAGS+= -I${.CURDIR}/../common
NOMAN= true
NOPIC= true
NOPROFILE= true
diff --git a/lib/csu/ia64/crt1.c b/lib/csu/ia64/crt1.c
index 8fa06ba..4f59233 100644
--- a/lib/csu/ia64/crt1.c
+++ b/lib/csu/ia64/crt1.c
@@ -38,6 +38,7 @@
#endif
#include <stdlib.h>
+#include "crtbrand.c"
struct Struct_Obj_Entry;
struct ps_strings;
OpenPOWER on IntegriCloud