Skip to content

Commit 7ac0ba8

Browse files
committed
first commit
0 parents  commit 7ac0ba8

3 files changed

Lines changed: 124 additions & 0 deletions

File tree

Makefile

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
CC ?= clang
2+
LIBDIR ?= /usr/lib
3+
4+
all: crtbeginS.o crtendS.o
5+
6+
crtbeginS.o:
7+
$(CC) $(CFLAGS) -fPIC -c "crtbegin.c" -o "crtbeginS.o"
8+
9+
crtendS.o:
10+
$(CC) $(CFLAGS) -fPIC -c "crtend.c" -o "crtendS.o"
11+
12+
install: crtbeginS.o crtendS.o
13+
install -d $(DESTDIR)$(LIBDIR)
14+
install -m 0644 crtbeginS.o $(DESTDIR)$(LIBDIR)
15+
install -m 0644 crtendS.o $(DESTDIR)$(LIBDIR)
16+
17+
clean:
18+
rm crtbeginS.o crtendS.o
19+
20+
.PHONY: all
21+
.PHONY: install
22+
.PHONY: clean

crtbegin.c

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/*-
2+
* Copyright 1996, 1997, 1998, 2000 John D. Polstra.
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions
7+
* are met:
8+
* 1. Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
* 2. Redistributions in binary form must reproduce the above copyright
11+
* notice, this list of conditions and the following disclaimer in the
12+
* documentation and/or other materials provided with the distribution.
13+
*
14+
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
15+
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16+
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17+
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
18+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23+
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24+
*
25+
* $FreeBSD$
26+
*/
27+
28+
typedef void (*fptr)(void);
29+
30+
fptr ctor_list[1] __attribute__((section(".ctors"))) __attribute__((visibility("hidden")));
31+
fptr dtor_list[1] __attribute__((section(".dtors"))) __attribute__((visibility("hidden")));
32+
33+
__attribute__((visibility("hidden"))) void *__dso_handle = &__dso_handle;
34+
35+
static void
36+
do_ctors(void) __attribute__((used));
37+
38+
static void
39+
do_ctors(void)
40+
{
41+
fptr *fpp;
42+
43+
for(fpp = ctor_list + 1; *fpp != 0; ++fpp)
44+
;
45+
while(--fpp > ctor_list)
46+
(**fpp)();
47+
}
48+
49+
static void
50+
do_dtors(void) __attribute__((used));
51+
52+
static void
53+
do_dtors(void)
54+
{
55+
fptr *fpp;
56+
57+
for(fpp = dtor_list + 1; *fpp != 0; ++fpp)
58+
(**fpp)();
59+
}
60+
61+
#if defined(__i386) || defined(__amd64)
62+
__asm__(".section .init,\"ax\",@progbits; call do_ctors; .previous");
63+
__asm__(".section .fini,\"ax\",@progbits; call do_dtors; .previous");
64+
#elif defined(__ppc64__) || defined(__aarch64__)
65+
__asm__(".section .init,\"ax\",@progbits; bl do_ctors; .previous");
66+
__asm__(".section .fini,\"ax\",@progbits; bl do_dtors; .previous");
67+
#else
68+
#error "Define initialization code for platform"
69+
#endif
70+

crtend.c

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*-
2+
* Copyright 1996-1998 John D. Polstra.
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without
6+
* modification, are permitted provided that the following conditions
7+
* are met:
8+
* 1. Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
* 2. Redistributions in binary form must reproduce the above copyright
11+
* notice, this list of conditions and the following disclaimer in the
12+
* documentation and/or other materials provided with the distribution.
13+
*
14+
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
15+
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16+
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17+
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
18+
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23+
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24+
*
25+
* $FreeBSD$
26+
*/
27+
28+
typedef void (*fptr)(void);
29+
30+
static fptr ctor_end[1] __attribute__((used)) __attribute__((section(".ctors"))) __attribute__((visibility("hidden"))) = { 0 };
31+
static fptr dtor_end[1] __attribute__((used)) __attribute__((section(".dtors"))) __attribute__((visibility("hidden"))) = { 0 };
32+

0 commit comments

Comments
 (0)