summaryrefslogtreecommitdiffstats
path: root/lib/csu
diff options
context:
space:
mode:
authorjb <jb@FreeBSD.org>1998-03-10 07:04:18 +0000
committerjb <jb@FreeBSD.org>1998-03-10 07:04:18 +0000
commitb12189af60a4a86ed715ab9a9915cbdd4548cfa1 (patch)
tree17e3983f8ad464cc75c68c4335c84112c73f50eb /lib/csu
parent8839778db0018a91d6b4398d8d98460787e193bf (diff)
downloadFreeBSD-src-b12189af60a4a86ed715ab9a9915cbdd4548cfa1.zip
FreeBSD-src-b12189af60a4a86ed715ab9a9915cbdd4548cfa1.tar.gz
Trash startup sources from NetBSD in favour of jdp's FreeBSD source
now that has been committed. The makefile is derived from the i386-elf version, modified to pick up most of the source (except crt1.c) from i386-elf. With minor changes to i386-elf/crt1.c, this directory can be combined with i386-elf to be a single csu/elf directory for all seasons.
Diffstat (limited to 'lib/csu')
-rw-r--r--lib/csu/alpha/Makefile64
-rw-r--r--lib/csu/alpha/crt0.c243
-rw-r--r--lib/csu/alpha/crtbegin.c120
-rw-r--r--lib/csu/alpha/crtend.c15
4 files changed, 23 insertions, 419 deletions
diff --git a/lib/csu/alpha/Makefile b/lib/csu/alpha/Makefile
index 7a3291d..e25f050 100644
--- a/lib/csu/alpha/Makefile
+++ b/lib/csu/alpha/Makefile
@@ -1,41 +1,23 @@
-# $Id$
-# From: NetBSD: Makefile,v 1.15 1997/10/24 21:18:25 thorpej Exp
-
-CPPFLAGS+= -DLIBC_SCCS -DPIC -DDYNAMIC -DELFSIZE=64
-CPPFLAGS+= -I${.CURDIR}/../../../libexec/ld.elf_so
-COPT+= -fPIC
-
-OBJS= crt0.o gcrt0.o crtbegin.o crtend.o
-
-CLEANFILES+= core a.out
-
-all: ${OBJS}
-
-crt0.o: crt0.c
- ${CC} -DCRT0 -c ${.CURDIR}/crt0.c -o ${.TARGET}.o
- @${LD} -x -r -o ${.TARGET} ${.TARGET}.o
- @rm -f ${.TARGET}.o
-
-gcrt0.o: crt0.c
- ${CC} -DMCRT0 -c ${.CURDIR}/crt0.c -o ${.TARGET}.o
- @${LD} -x -r -o ${.TARGET} ${.TARGET}.o
- @rm -f ${.TARGET}.o
-
-crtbegin.o: crtbegin.c
- ${CC} -c ${.CURDIR}/crtbegin.c -o ${.TARGET}.o
- @${LD} -x -r -o ${.TARGET} ${.TARGET}.o
- @rm -f ${.TARGET}.o
-
-crtend.o: crtend.c
- ${CC} -c ${.CURDIR}/crtend.c -o ${.TARGET}.o
- @${LD} -x -r -o ${.TARGET} ${.TARGET}.o
- @rm -f ${.TARGET}.o
-
-install:
- ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m 444 ${OBJS} \
- ${DESTDIR}/usr/lib
- rm -f ${DESTDIR}/usr/lib/crtbeginS.o ${DESTDIR}/usr/lib/crtendS.o
- ln ${DESTDIR}/usr/lib/crtbegin.o ${DESTDIR}/usr/lib/crtbeginS.o
- ln ${DESTDIR}/usr/lib/crtend.o ${DESTDIR}/usr/lib/crtendS.o
-
-.include <bsd.prog.mk>
+#
+# $Id: Makefile,v 1.1.1.1 1998/03/07 20:27:10 jdp Exp $
+#
+
+.PATH: ${.CURDIR}/../i386-elf
+SRCS= crt1.c crtbegin.c crtend.c crti.S crtn.S
+OBJS= ${SRCS:N*.h:R:S/$/.o/g}
+SOBJS= crtbegin.so crtend.so
+CFLAGS+= -Wall -Wno-unused
+NOMAN= true
+NOPIC= true
+NOPROFILE= true
+INTERNALLIB= true
+
+all: ${OBJS} ${SOBJS}
+
+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/crt0.c b/lib/csu/alpha/crt0.c
deleted file mode 100644
index 0e5688e..0000000
--- a/lib/csu/alpha/crt0.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/* $Id$ */
-/* From: NetBSD: crt0.c,v 1.11 1997/10/20 20:41:09 thorpej Exp */
-
-/*
- * Copyright (c) 1995 Christopher G. Demetriou
- * 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.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Christopher G. Demetriou
- * for the NetBSD Project.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission
- *
- * 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.
- */
-
-#ifdef ECOFF_COMPAT
-#undef DYNAMIC
-#endif
-
-#include <sys/param.h>
-#include <sys/exec.h>
-#include <sys/syscall.h>
-#include <vm/vm.h>
-
-#include <stdlib.h>
-#ifdef DYNAMIC
-#include <dlfcn.h>
-#include "rtld.h"
-#else
-typedef void Obj_Entry;
-#endif
-
-/*
- * Lots of the chunks of this file cobbled together from pieces of
- * other NetBSD crt files, including the common code.
- */
-
-extern int __syscall __P((int, ...));
-#define _exit(v) __syscall(SYS_exit, (v))
-#define write(fd, s, n) __syscall(SYS_write, (fd), (s), (n))
-
-#define _FATAL(str) \
- do { \
- write(2, str, sizeof(str)); \
- _exit(1); \
- } while (0)
-
-static char *_strrchr __P((char *, char));
-
-
-char **environ;
-char *__progname = "";
-struct ps_strings *__ps_strings = 0;
-
-#ifndef ECOFF_COMPAT
-extern void __init __P((void));
-extern void __fini __P((void));
-#endif /* ECOFF_COMPAT */
-
-#ifdef DYNAMIC
-void rtld_setup __P((void (*)(void), const Obj_Entry *obj));
-
-const Obj_Entry *__mainprog_obj;
-
-/*
- * Arrange for _DYNAMIC to be weak and undefined (and therefore to show up
- * as being at address zero, unless something else defines it). That way,
- * if we happen to be compiling without -static but with without any
- * shared libs present, things will still work.
- */
-asm(".weak _DYNAMIC");
-extern int _DYNAMIC;
-#endif /* DYNAMIC */
-
-#ifdef MCRT0
-extern void monstartup __P((u_long, u_long));
-extern void _mcleanup __P((void));
-extern unsigned char _etext, _eprol;
-#endif /* MCRT0 */
-
-void __start __P((char **, void (*cleanup) __P((void)), const Obj_Entry *,
- struct ps_strings *));
-int main __P((int, char **, char **));
-
-void
-__start(sp, cleanup, obj, ps_strings)
- char **sp;
- void (*cleanup) __P((void)); /* from shared loader */
- const Obj_Entry *obj; /* from shared loader */
- struct ps_strings *ps_strings;
-{
- long argc;
- char **argv, *namep;
-
- argc = *(long *)sp;
- argv = sp + 1;
- environ = sp + 2 + argc; /* 2: argc + NULL ending argv */
-
- if ((namep = argv[0]) != NULL) { /* NULL ptr if argc = 0 */
- if ((__progname = _strrchr(namep, '/')) == NULL)
- __progname = namep;
- else
- __progname++;
- }
-
- if (ps_strings != (struct ps_strings *)0 &&
- ps_strings != (struct ps_strings *)0xbabefacedeadbeef)
- __ps_strings = ps_strings;
-
-#ifdef DYNAMIC
- if (&_DYNAMIC != NULL)
- rtld_setup(cleanup, obj);
-#endif
-
-#ifdef MCRT0
- atexit(_mcleanup);
- monstartup((u_long)&_eprol, (u_long)&_etext);
-#endif
-
-#ifndef ECOFF_COMPAT
- atexit(__fini);
- __init();
-#endif /* ECOFF_COMPAT */
-
- exit(main(argc, argv, environ));
-}
-
-/*
- * NOTE: Leave the RCS ID _after_ __start(), in case it gets placed in .text.
- */
-#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: crt0.c,v 1.11 1997/10/20 20:41:09 thorpej Exp $");
-#endif /* LIBC_SCCS and not lint */
-
-static char *
-_strrchr(p, ch)
-register char *p, ch;
-{
- register char *save;
-
- for (save = NULL;; ++p) {
- if (*p == ch)
- save = (char *)p;
- if (!*p)
- return(save);
- }
-/* NOTREACHED */
-}
-
-#ifdef MCRT0
-asm (" .text");
-asm ("_eprol:");
-#endif
-
-#ifdef DYNAMIC
-void
-rtld_setup(cleanup, obj)
- void (*cleanup) __P((void));
- const Obj_Entry *obj;
-{
-
- if ((obj == NULL) || (obj->magic != RTLD_MAGIC))
- _FATAL("Corrupt Obj_Entry pointer in GOT");
- if (obj->version != RTLD_VERSION)
- _FATAL("Dynamic linker version mismatch");
-
- __mainprog_obj = obj;
- atexit(cleanup);
-}
-
-void *
-dlopen(name, mode)
- const char *name;
- int mode;
-{
-
- if (__mainprog_obj == NULL)
- return NULL;
- return (__mainprog_obj->dlopen)(name, mode);
-}
-
-int
-dlclose(fd)
- void *fd;
-{
-
- if (__mainprog_obj == NULL)
- return -1;
- return (__mainprog_obj->dlclose)(fd);
-}
-
-void *
-dlsym(fd, name)
- void *fd;
- const char *name;
-{
-
- if (__mainprog_obj == NULL)
- return NULL;
- return (__mainprog_obj->dlsym)(fd, name);
-}
-
-#if 0 /* not supported for ELF shlibs, apparently */
-int
-dlctl(fd, cmd, arg)
- void *fd, *arg;
- int cmd;
-{
-
- if (__mainprog_obj == NULL)
- return -1;
- return (__mainprog_obj->dlctl)(fd, cmd, arg);
-}
-#endif
-
-char *
-dlerror()
-{
-
- if (__mainprog_obj == NULL)
- return NULL;
- return (__mainprog_obj->dlerror)();
-}
-#endif /* DYNAMIC */
diff --git a/lib/csu/alpha/crtbegin.c b/lib/csu/alpha/crtbegin.c
deleted file mode 100644
index 2a6cac7..0000000
--- a/lib/csu/alpha/crtbegin.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/* $Id$ */
-/* From: NetBSD: crtbegin.c,v 1.2 1997/03/21 05:47:28 cgd Exp */
-
-/*
- * Copyright (c) 1993 Paul Kranenburg
- * 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.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Paul Kranenburg.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission
- *
- * 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 ECOFF_COMPAT
-
-/*
- * XXX EVENTUALLY SHOULD BE MERGED BACK WITH c++rt0.c
- */
-
-/*
- * Run-time module which handles constructors and destructors,
- * and NetBSD identification.
- *
- * The linker constructs the following arrays of pointers to global
- * constructors and destructors. The first element contains the
- * number of pointers in each or -1 to indicate that the run-time
- * code should figure out how many there are. The tables are also
- * null-terminated.
- */
-
-#include <sys/param.h>
-#include <sys/exec.h>
-#include <sys/exec_elf.h>
-#include <stdlib.h>
-
-/* #include "sysident.h" */
-
-static void (*__CTOR_LIST__[1]) __P((void))
- __attribute__((section(".ctors"))) = { (void *)-1 }; /* XXX */
-static void (*__DTOR_LIST__[1]) __P((void))
- __attribute__((section(".dtors"))) = { (void *)-1 }; /* XXX */
-
-static void __dtors __P((void));
-static void __ctors __P((void));
-
-static void
-__dtors()
-{
- unsigned long i = (unsigned long) __DTOR_LIST__[0];
- void (**p)(void);
-
- if (i == -1) {
- for (i = 1; __DTOR_LIST__[i] != NULL; i++)
- ;
- i--;
- }
- p = __DTOR_LIST__ + i;
- while (i--)
- (**p--)();
-}
-
-static void
-__ctors()
-{
- void (**p)(void) = __CTOR_LIST__ + 1;
-
- while (*p)
- (**p++)();
-}
-
-extern void __init(void) __attribute__((section(".init")));
-
-void
-__init()
-{
- static int initialized = 0;
-
- /*
- * Call global constructors.
- * Arrange to call global destructors at exit.
- */
- if (!initialized) {
- initialized = 1;
- __ctors();
- }
-
-}
-
-extern void __fini(void) __attribute__((section(".fini")));
-
-void
-__fini()
-{
- /*
- * Call global destructors.
- */
- __dtors();
-}
-
-#endif /* !ECOFF_COMPAT */
diff --git a/lib/csu/alpha/crtend.c b/lib/csu/alpha/crtend.c
deleted file mode 100644
index 826aa45..0000000
--- a/lib/csu/alpha/crtend.c
+++ /dev/null
@@ -1,15 +0,0 @@
-/* $Id$ */
-/* From: NetBSD: crtend.c,v 1.2 1997/10/10 08:45:30 mrg Exp */
-
-#ifndef ECOFF_COMPAT
-
-#include <sys/cdefs.h>
-
-static void (*__CTOR_LIST__[1]) __P((void))
- __attribute__((__unused__))
- __attribute__((section(".ctors"))) = { (void *)0 }; /* XXX */
-static void (*__DTOR_LIST__[1]) __P((void))
- __attribute__((__unused__))
- __attribute__((section(".dtors"))) = { (void *)0 }; /* XXX */
-
-#endif /* !ECOFF_COMPAT */
OpenPOWER on IntegriCloud