blob: c0a044402e3bae95d3b178a3939ae978ad9c91fe (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#pragma once
enum InitFiniKind {
INITFINI_INIT, // .init section
INITFINI_FINI, // .fini section
INITFINI_CTORS, // .ctors section
INITFINI_DTORS, // .dtors section
INITFINI_INIT_ARRAY, // .init_array section
INITFINI_FINI_ARRAY, // .fini_array section
};
// A linked-list of initializer or finalizer sections.
struct InitFiniList {
Section *section;
uint32_t priority;
enum InitFiniKind kind;
struct InitFiniList *next;
};
void addInitFini(struct InitFiniList **slist, Section *section, enum InitFiniKind kind, uint32_t priority);
void freeInitFiniList(struct InitFiniList *slist);
bool runInit(struct InitFiniList **slist);
bool runFini(struct InitFiniList **slist);
|