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)10void InitProcess(int32_t order) 11 { 12 g_initOrder = g_initOrder * TEST_NUM_10 + order; 13 } 14 FinalizeProcess(int32_t order)15void FinalizeProcess(int32_t order) 16 { 17 if (g_finalizeCallback) { 18 g_finalizeCallback(order); 19 } 20 } 21 SetFinalizeCallback(void (* callback)(int32_t order))22void 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()37void DlopenInitFinalize() 38 { 39 DlopenInitFinalize1(); 40 DlopenInitFinalize2(); 41 }