diff options
Diffstat (limited to 'src/include/autoinit_funcs.h')
-rw-r--r-- | src/include/autoinit_funcs.h | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/include/autoinit_funcs.h b/src/include/autoinit_funcs.h index a289b0bc..f48c4f9c 100644 --- a/src/include/autoinit_funcs.h +++ b/src/include/autoinit_funcs.h | |||
@@ -67,7 +67,7 @@ | |||
67 | * Current version of the header in packed BCD form. | 67 | * Current version of the header in packed BCD form. |
68 | * 0x01093001 = 1.9.30-1. | 68 | * 0x01093001 = 1.9.30-1. |
69 | */ | 69 | */ |
70 | #define AUTOINIT_FUNCS_VERSION 0x01000200 | 70 | #define AUTOINIT_FUNCS_VERSION 0x01000300 |
71 | 71 | ||
72 | #if defined(__GNUC__) || defined(__clang__) | 72 | #if defined(__GNUC__) || defined(__clang__) |
73 | /* if possible - check for supported attribute */ | 73 | /* if possible - check for supported attribute */ |
@@ -85,9 +85,11 @@ | |||
85 | (defined(__SUNPRO_C) && __SUNPRO_C + 0 >= 0x5100) | 85 | (defined(__SUNPRO_C) && __SUNPRO_C + 0 >= 0x5100) |
86 | 86 | ||
87 | #define GNUC_SET_INIT_AND_DEINIT(FI,FD) \ | 87 | #define GNUC_SET_INIT_AND_DEINIT(FI,FD) \ |
88 | void __attribute__ ((constructor)) _GNUC_init_helper_ ## FI (void) \ | 88 | void __attribute__ ((constructor)) _GNUC_init_helper_ ## FI (void); \ |
89 | void __attribute__ ((destructor)) _GNUC_deinit_helper_ ## FD (void); \ | ||
90 | void __attribute__ ((constructor)) _GNUC_init_helper_ ## FI (void) \ | ||
89 | { (void) (FI) (); } \ | 91 | { (void) (FI) (); } \ |
90 | void __attribute__ ((destructor)) _GNUC_deinit_helper_ ## FD (void) \ | 92 | void __attribute__ ((destructor)) _GNUC_deinit_helper_ ## FD (void) \ |
91 | { (void) (FD) (); } \ | 93 | { (void) (FD) (); } \ |
92 | struct _GNUC_dummy_str_ ## FI {int i;} | 94 | struct _GNUC_dummy_str_ ## FI {int i;} |
93 | 95 | ||
@@ -204,9 +206,11 @@ | |||
204 | 206 | ||
205 | #if ! defined(_USRDLL) || defined(AUTOINIT_FUNCS_FORCE_STATIC_REG) | 207 | #if ! defined(_USRDLL) || defined(AUTOINIT_FUNCS_FORCE_STATIC_REG) |
206 | #define W32_SET_INIT_AND_DEINIT(FI,FD) \ | 208 | #define W32_SET_INIT_AND_DEINIT(FI,FD) \ |
207 | void __cdecl _W32_deinit_helper_ ## FD (void) \ | 209 | int __cdecl _W32_init_helper_ ## FI (void); \ |
210 | void __cdecl _W32_deinit_helper_ ## FD (void); \ | ||
211 | void __cdecl _W32_deinit_helper_ ## FD (void) \ | ||
208 | { (void) (FD) (); } \ | 212 | { (void) (FD) (); } \ |
209 | int __cdecl _W32_init_helper_ ## FI (void) \ | 213 | int __cdecl _W32_init_helper_ ## FI (void) \ |
210 | { (void) (FI) (); atexit (_W32_deinit_helper_ ## FD); return 0; } \ | 214 | { (void) (FI) (); atexit (_W32_deinit_helper_ ## FD); return 0; } \ |
211 | W32_REGISTER_INIT (_W32_init_helper_ ## FI) | 215 | W32_REGISTER_INIT (_W32_init_helper_ ## FI) |
212 | #else /* _USRDLL */ | 216 | #else /* _USRDLL */ |
@@ -215,7 +219,8 @@ | |||
215 | and rename DllMain to usr_DllMain */ | 219 | and rename DllMain to usr_DllMain */ |
216 | #ifndef AUTOINIT_FUNCS_CALL_USR_DLLMAIN | 220 | #ifndef AUTOINIT_FUNCS_CALL_USR_DLLMAIN |
217 | #define W32_SET_INIT_AND_DEINIT(FI,FD) \ | 221 | #define W32_SET_INIT_AND_DEINIT(FI,FD) \ |
218 | BOOL WINAPI DllMain (HINSTANCE hinst,DWORD reason,LPVOID unused) \ | 222 | BOOL WINAPI DllMain (HINSTANCE hinst,DWORD reason,LPVOID unused); \ |
223 | BOOL WINAPI DllMain (HINSTANCE hinst,DWORD reason,LPVOID unused) \ | ||
219 | { if (DLL_PROCESS_ATTACH==reason) {(void) (FI) ();} \ | 224 | { if (DLL_PROCESS_ATTACH==reason) {(void) (FI) ();} \ |
220 | else if (DLL_PROCESS_DETACH==reason) {(void) (FD) ();} \ | 225 | else if (DLL_PROCESS_DETACH==reason) {(void) (FD) ();} \ |
221 | return TRUE; \ | 226 | return TRUE; \ |
@@ -223,7 +228,8 @@ | |||
223 | #else /* AUTOINIT_FUNCS_CALL_USR_DLLMAIN */ | 228 | #else /* AUTOINIT_FUNCS_CALL_USR_DLLMAIN */ |
224 | #define W32_SET_INIT_AND_DEINIT(FI,FD) \ | 229 | #define W32_SET_INIT_AND_DEINIT(FI,FD) \ |
225 | BOOL WINAPI usr_DllMain (HINSTANCE hinst,DWORD reason,LPVOID unused); \ | 230 | BOOL WINAPI usr_DllMain (HINSTANCE hinst,DWORD reason,LPVOID unused); \ |
226 | BOOL WINAPI DllMain (HINSTANCE hinst,DWORD reason,LPVOID unused) \ | 231 | BOOL WINAPI DllMain (HINSTANCE hinst,DWORD reason,LPVOID unused); \ |
232 | BOOL WINAPI DllMain (HINSTANCE hinst,DWORD reason,LPVOID unused) \ | ||
227 | { if (DLL_PROCESS_ATTACH==reason) {(void) (FI) ();} \ | 233 | { if (DLL_PROCESS_ATTACH==reason) {(void) (FI) ();} \ |
228 | else if (DLL_PROCESS_DETACH==reason) {(void) (FD) ();} \ | 234 | else if (DLL_PROCESS_DETACH==reason) {(void) (FD) ();} \ |
229 | return usr_DllMain (hinst,reason,unused); \ | 235 | return usr_DllMain (hinst,reason,unused); \ |