diff options
author | cvs2svn <cvs2svn@FreeBSD.org> | 1998-01-11 03:30:40 +0000 |
---|---|---|
committer | cvs2svn <cvs2svn@FreeBSD.org> | 1998-01-11 03:30:40 +0000 |
commit | 0506343883d62f6649f7bbaf1a436133cef6261d (patch) | |
tree | 516c4eb92ace39269d5bd4aa0709127052a534af /lib/csu/alpha | |
parent | 003a004c3913cb110e71d5dc731fd7cd489ba396 (diff) | |
download | FreeBSD-src-0506343883d62f6649f7bbaf1a436133cef6261d.zip FreeBSD-src-0506343883d62f6649f7bbaf1a436133cef6261d.tar.gz |
This commit was manufactured by cvs2svn to create branch 'jb'.
Diffstat (limited to 'lib/csu/alpha')
-rw-r--r-- | lib/csu/alpha/Makefile | 41 | ||||
-rw-r--r-- | lib/csu/alpha/crt0.c | 243 |
2 files changed, 0 insertions, 284 deletions
diff --git a/lib/csu/alpha/Makefile b/lib/csu/alpha/Makefile deleted file mode 100644 index 7a3291d..0000000 --- a/lib/csu/alpha/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# $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> 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 */ |