Page MenuHomeFreeBSD

D17587.id49238.diff
No OneTemporary

D17587.id49238.diff

Index: gnu/lib/Makefile
===================================================================
--- gnu/lib/Makefile
+++ gnu/lib/Makefile
@@ -2,7 +2,8 @@
.include <src.opts.mk>
-SUBDIR= csu
+SUBDIR=
+#SUBDIR= csu
SUBDIR.${MK_DIALOG}+= libdialog
SUBDIR.${MK_GCC}+= libgcov libgomp
SUBDIR.${MK_SSP}+= libssp
Index: lib/csu/Makefile.crt
===================================================================
--- /dev/null
+++ lib/csu/Makefile.crt
@@ -0,0 +1,17 @@
+
+OBJS+= crtbegin.o crtbeginS.o crtbeginT.o
+OBJS+= crtend.o crtendS.o
+
+CFLAGS_CRTS= -DSHARED ${PICFLAG}
+
+crtbegin.o: crtbegin.c
+crtbeginS.o: crtbegin.c
+crtbeginT.o: crtbegin.c
+crtend.o: crtend.c
+crtendS.o: crtend.c
+
+crtbegin.o crtend.o crtbeginT.o:
+ ${CC} ${CFLAGS} -I${.CURDIR} -c -o ${.TARGET} ${.ALLSRC}
+
+crtbeginS.o crtendS.o:
+ ${CC} ${CFLAGS} -I${.CURDIR} ${CFLAGS_CRTS} -c -o ${.TARGET} ${.ALLSRC}
Index: lib/csu/aarch64/Makefile
===================================================================
--- lib/csu/aarch64/Makefile
+++ lib/csu/aarch64/Makefile
@@ -44,4 +44,5 @@
Scrt1.o: Scrt1.s
${CC} ${CFLAGS:N-g} ${ACFLAGS} -c -o ${.TARGET} Scrt1.s
+.include <../Makefile.crt>
.include <bsd.lib.mk>
Index: lib/csu/aarch64/crt.h
===================================================================
--- /dev/null
+++ lib/csu/aarch64/crt.h
@@ -0,0 +1,32 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright 2018 Andrew Turner
+ *
+ * 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.
+ */
+
+#ifndef _CRT_H_
+#define _CRT_H_
+
+#define HAVE_INITFINI_ARRAY
+
+#endif
Index: lib/csu/amd64/Makefile
===================================================================
--- lib/csu/amd64/Makefile
+++ lib/csu/amd64/Makefile
@@ -44,4 +44,5 @@
Scrt1.o: Scrt1.s
${CC} ${CFLAGS:N-g} ${ACFLAGS} -c -o ${.TARGET} Scrt1.s
+.include <../Makefile.crt>
.include <bsd.lib.mk>
Index: lib/csu/amd64/crt.h
===================================================================
--- /dev/null
+++ lib/csu/amd64/crt.h
@@ -0,0 +1,32 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright 2018 Andrew Turner
+ *
+ * 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.
+ */
+
+#ifndef _CRT_H_
+#define _CRT_H_
+
+#define INIT_CALL_SEQ(func) "call " __STRING(func)
+
+#endif
Index: lib/csu/common/crtbegin.c
===================================================================
--- /dev/null
+++ lib/csu/common/crtbegin.c
@@ -0,0 +1,88 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright 2018 Andrew Turner
+ *
+ * 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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+
+#include "crt.h"
+
+typedef void (*crt_func)(void);
+
+/*
+ * Handler for gcj. These provide a _Jv_RegisterClasses function and fill
+ * out the .jcr section. We just need to call this function with a pointer
+ * to the appropriate section.
+ */
+extern void _Jv_RegisterClasses(void *) __weak_symbol;
+static void register_classes(void) __used;
+
+crt_func __JCR_LIST__[] __section(".jcr") __used __hidden = { };
+
+__attribute__((constructor))
+static void
+register_classes(void)
+{
+
+ if (_Jv_RegisterClasses != NULL && __JCR_LIST__[0] != 0)
+ _Jv_RegisterClasses(__JCR_LIST__);
+}
+
+/*
+ * On some architectures and toolchains we may need to call the .dtors.
+ * These are called in the order they are in the ELF file.
+ */
+#ifndef HAVE_INITFINI_ARRAY
+static void __do_global_dtors_aux(void) __used;
+
+crt_func __CTOR_LIST__[] __section(".ctors") __hidden = {
+ (crt_func)-1
+};
+crt_func __DTOR_LIST__[] __section(".dtors") __hidden = {
+ (crt_func)-1
+};
+
+static void
+__do_global_dtors_aux(void)
+{
+ crt_func fn;
+ int n;
+
+ for (n = 1;; n++) {
+ fn = __DTOR_LIST__[n];
+ if (fn == (crt_func)0 || fn == (crt_func)-1)
+ break;
+ fn();
+ }
+}
+
+asm (
+ ".section .fini \n"
+ INIT_CALL_SEQ(__do_global_dtors_aux) "\n"
+ ".text \n"
+);
+#endif
Index: lib/csu/common/crtend.c
===================================================================
--- /dev/null
+++ lib/csu/common/crtend.c
@@ -0,0 +1,67 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ *
+ * Copyright 2018 Andrew Turner
+ *
+ * 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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include "crt.h"
+
+typedef void (*crt_func)(void);
+
+/*
+ * On some architectures and toolchains we may need to call the .dtors.
+ * These are called in the reverse order they are in the ELF file.
+ */
+#ifndef HAVE_INITFINI_ARRAY
+static void __do_global_ctors_aux(void) __used;
+
+crt_func __CTOR_END__[] __section(".ctors") __used __hidden = {
+ (crt_func)0
+};
+crt_func __DTOR_END__[] __section(".dtors") __used __hidden = {
+ (crt_func)0
+};
+
+static void
+__do_global_ctors_aux(void)
+{
+ crt_func fn;
+ int n;
+
+ for (n = 1;; n++) {
+ fn = __CTOR_END__[-n];
+ if (fn == (crt_func)0 || fn == (crt_func)-1)
+ break;
+ fn();
+ }
+}
+
+asm (
+ ".section .init \n"
+ INIT_CALL_SEQ(__do_global_ctors_aux) "\n"
+ ".text \n"
+);
+#endif

File Metadata

Mime Type
text/plain
Expires
Sun, Jul 19, 3:16 PM (17 m, 59 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35237936
Default Alt Text
D17587.id49238.diff (9 KB)

Event Timeline