xref: /freebsd/contrib/llvm-project/compiler-rt/lib/builtins/crtend.c (revision 06c3fb2749bda94cb5201f81ffdb8fa6c3161b2e)
1*06c3fb27SDimitry Andric //===-- crtend.c - End of constructors and destructors --------------------===//
2*06c3fb27SDimitry Andric //
3*06c3fb27SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*06c3fb27SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5*06c3fb27SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*06c3fb27SDimitry Andric //
7*06c3fb27SDimitry Andric //===----------------------------------------------------------------------===//
8*06c3fb27SDimitry Andric 
9*06c3fb27SDimitry Andric #include <stdint.h>
10*06c3fb27SDimitry Andric 
11*06c3fb27SDimitry Andric // Put 4-byte zero which is the length field in FDE at the end as a terminator.
12*06c3fb27SDimitry Andric const int32_t __EH_FRAME_LIST_END__[]
13*06c3fb27SDimitry Andric     __attribute__((section(".eh_frame"), aligned(sizeof(int32_t)),
14*06c3fb27SDimitry Andric                    visibility("hidden"), used)) = {0};
15*06c3fb27SDimitry Andric 
16*06c3fb27SDimitry Andric #ifndef CRT_HAS_INITFINI_ARRAY
17*06c3fb27SDimitry Andric typedef void (*fp)(void);
18*06c3fb27SDimitry Andric fp __CTOR_LIST_END__[]
19*06c3fb27SDimitry Andric     __attribute__((section(".ctors"), visibility("hidden"), used)) = {0};
20*06c3fb27SDimitry Andric fp __DTOR_LIST_END__[]
21*06c3fb27SDimitry Andric     __attribute__((section(".dtors"), visibility("hidden"), used)) = {0};
22*06c3fb27SDimitry Andric #endif
23