1 | /* Dummy crti file. |
2 | |
3 | In this configuration, crti.o and crtn.o are both empty because the |
4 | .init_array/.fini_array sections are used exclusively. |
5 | |
6 | Older ports cannot use this because even if the linker used to |
7 | build libc itself has .init_array support, we don't want to produce |
8 | a crt[in].o that presume a linker that new will be used to link |
9 | other things later. |
10 | |
11 | But new configurations without compatibility concerns for |
12 | toolchains without .init_array support can use this to avoid the |
13 | superfluous .init and .fini boilerplate code. */ |
14 | |
15 | #include <elf-initfini.h> |
16 | |
17 | #if ELF_INITFINI |
18 | # error Cannot use default crti.S because it lacks _init code |
19 | #endif |
20 | |
21 | #ifdef PREINIT_FUNCTION |
22 | |
23 | # if PREINIT_FUNCTION_WEAK |
24 | # error PREINIT_FUNCTION_WEAK is unsupported |
25 | # endif |
26 | |
27 | /* This arranges for PREINIT_FUNCTION to be called upon loading a library that |
28 | contains crti.o. */ |
29 | |
30 | .section .init_array,"a" ,%init_array |
31 | .dc.a PREINIT_FUNCTION |
32 | |
33 | #endif |
34 | |