• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <stdint.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include "dlopen_init_finalize.h"
5 #include "ldso_gtest_util.h"
6 
7 int32_t volatile g_initOrder = 0;
8 void (*g_finalizeCallback)(int32_t order) = NULL;
9 
InitProcess(int32_t order)10 void InitProcess(int32_t order)
11 {
12     g_initOrder = g_initOrder * TEST_NUM_10 + order;
13 }
14 
FinalizeProcess(int32_t order)15 void FinalizeProcess(int32_t order)
16 {
17     if (g_finalizeCallback) {
18         g_finalizeCallback(order);
19     }
20 }
21 
SetFinalizeCallback(void (* callback)(int32_t order))22 void SetFinalizeCallback(void (*callback)(int32_t order))
23 {
24     g_finalizeCallback = callback;
25 }
26 
Init()27 __attribute__((constructor)) static void Init()
28 {
29     InitProcess(PROCESS_ORDER_1);
30 }
31 
Finalize()32 __attribute__((destructor)) static void Finalize()
33 {
34     FinalizeProcess(PROCESS_ORDER_1);
35 }
36 
DlopenInitFinalize()37 void DlopenInitFinalize()
38 {
39     DlopenInitFinalize1();
40     DlopenInitFinalize2();
41 }