diff --git a/rtl/bsd/i386/Makefile b/rtl/bsd/i386/Makefile new file mode 100644 index 0000000000..e77785ab76 --- /dev/null +++ b/rtl/bsd/i386/Makefile @@ -0,0 +1,27 @@ +# +# $FreeBSD: src/lib/csu/i386-elf/Makefile,v 1.3.2.3 1999/08/29 14:55:14 peter Exp $ +# + +SRCS= crt1.c crtbegin.c crtend.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 +LDFLAGS+= -elf +NOMAN= true +NOPIC= true +NOPROFILE= true +INTERNALLIB= true + +all: ${OBJS} ${SOBJS} + +gcrt1.o: crt1.c + ${CC} ${CFLAGS} -DGCRT -c -o gcrt1.o ${.CURDIR}/crt1.c + +realinstall: +.for file in ${OBJS} ${SOBJS} + ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${file} ${DESTDIR}${LIBDIR}/${file:S/.So$/S.o/} +.endfor + +.include diff --git a/rtl/bsd/i386/crt1.o b/rtl/bsd/i386/crt1.o new file mode 100644 index 0000000000..0ee911265c Binary files /dev/null and b/rtl/bsd/i386/crt1.o differ diff --git a/rtl/bsd/i386/crtbegin.c b/rtl/bsd/i386/crtbegin.c new file mode 100644 index 0000000000..510c9ce881 --- /dev/null +++ b/rtl/bsd/i386/crtbegin.c @@ -0,0 +1,59 @@ +/*- + * Copyright 1996-1998 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: src/lib/csu/i386-elf/crtbegin.c,v 1.1.1.1.2.3 1999/08/29 14:55:15 peter Exp $ + */ + +#include + +typedef void (*fptr)(void); + +static fptr ctor_list[1] __attribute__((section(".ctors"))) = { (fptr) -1 }; +static fptr dtor_list[1] __attribute__((section(".dtors"))) = { (fptr) -1 }; + +static void do_ctors(void) __unused; +static void do_dtors(void) __unused; + +static void +do_ctors(void) +{ + fptr *fpp; + + for(fpp = ctor_list + 1; *fpp != 0; ++fpp) + ; + while(--fpp > ctor_list) + (**fpp)(); +} + +static void +do_dtors(void) +{ + fptr *fpp; + + for(fpp = dtor_list + 1; *fpp != 0; ++fpp) + (**fpp)(); +} + +__asm__(".section .init,\"ax\",@progbits; call do_ctors; .previous"); +__asm__(".section .fini,\"ax\",@progbits; call do_dtors; .previous"); diff --git a/rtl/bsd/i386/crtbegin.o b/rtl/bsd/i386/crtbegin.o new file mode 100644 index 0000000000..600b41c3e2 Binary files /dev/null and b/rtl/bsd/i386/crtbegin.o differ diff --git a/rtl/bsd/i386/crtend.c b/rtl/bsd/i386/crtend.c new file mode 100644 index 0000000000..b0c4119c98 --- /dev/null +++ b/rtl/bsd/i386/crtend.c @@ -0,0 +1,33 @@ +/*- + * Copyright 1996-1998 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: src/lib/csu/i386-elf/crtend.c,v 1.1.1.1.2.2 1999/08/29 14:55:15 peter Exp $ + */ + +#include + +typedef void (*fptr)(void); + +static fptr ctor_end[1] __attribute__((section(".ctors"))) __unused = { 0 }; +static fptr dtor_end[1] __attribute__((section(".dtors"))) __unused = { 0 }; diff --git a/rtl/bsd/i386/crtend.o b/rtl/bsd/i386/crtend.o new file mode 100644 index 0000000000..9b09fbdf6f Binary files /dev/null and b/rtl/bsd/i386/crtend.o differ diff --git a/rtl/bsd/i386/crti.S b/rtl/bsd/i386/crti.S new file mode 100644 index 0000000000..9b3b193f3a --- /dev/null +++ b/rtl/bsd/i386/crti.S @@ -0,0 +1,38 @@ +/*- + * Copyright 1996-1998 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: src/lib/csu/i386-elf/crti.S,v 1.1.1.1.2.1 1999/08/29 14:55:15 peter Exp $ + */ + + .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/rtl/bsd/i386/crti.o b/rtl/bsd/i386/crti.o new file mode 100644 index 0000000000..30bab926e2 Binary files /dev/null and b/rtl/bsd/i386/crti.o differ diff --git a/rtl/bsd/i386/crtn.S b/rtl/bsd/i386/crtn.S new file mode 100644 index 0000000000..83684fdef7 --- /dev/null +++ b/rtl/bsd/i386/crtn.S @@ -0,0 +1,32 @@ +/*- + * Copyright 1996-1998 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: src/lib/csu/i386-elf/crtn.S,v 1.1.1.1.2.1 1999/08/29 14:55:15 peter Exp $ + */ + + .section .init,"ax",@progbits + ret + + .section .fini,"ax",@progbits + ret diff --git a/rtl/bsd/i386/crtn.o b/rtl/bsd/i386/crtn.o new file mode 100644 index 0000000000..b916197499 Binary files /dev/null and b/rtl/bsd/i386/crtn.o differ diff --git a/rtl/bsd/i386/gcrt1.o b/rtl/bsd/i386/gcrt1.o new file mode 100644 index 0000000000..d3c484669e Binary files /dev/null and b/rtl/bsd/i386/gcrt1.o differ