Alexandre Julliard : include/msvcrt: Add noreturn attributes.
Alexandre Julliard
julliard at winehq.org
Tue Apr 23 17:39:53 CDT 2019
Module: wine
Branch: master
Commit: 52bc3abb1bbc28825019dbbcb94a3171f7491441
URL: https://source.winehq.org/git/wine.git/?a=commit;h=52bc3abb1bbc28825019dbbcb94a3171f7491441
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Apr 22 13:55:43 2019 +0200
include/msvcrt: Add noreturn attributes.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
include/msvcrt/crtdefs.h | 10 ++++++++++
include/msvcrt/eh.h | 4 ++--
include/msvcrt/process.h | 10 +++++-----
include/msvcrt/stdlib.h | 8 ++++----
4 files changed, 21 insertions(+), 11 deletions(-)
diff --git a/include/msvcrt/crtdefs.h b/include/msvcrt/crtdefs.h
index 0c0b087..653d459 100644
--- a/include/msvcrt/crtdefs.h
+++ b/include/msvcrt/crtdefs.h
@@ -117,6 +117,16 @@
# endif
#endif
+#ifndef DECLSPEC_NORETURN
+# if defined(_MSC_VER) && (_MSC_VER >= 1200) && !defined(MIDL_PASS)
+# define DECLSPEC_NORETURN __declspec(noreturn)
+# elif defined(__GNUC__)
+# define DECLSPEC_NORETURN __attribute__((noreturn))
+# else
+# define DECLSPEC_NORETURN
+# endif
+#endif
+
#ifndef DECLSPEC_ALIGN
# if defined(_MSC_VER) && (_MSC_VER >= 1300) && !defined(MIDL_PASS)
# define DECLSPEC_ALIGN(x) __declspec(align(x))
diff --git a/include/msvcrt/eh.h b/include/msvcrt/eh.h
index 932972f..90f8896 100644
--- a/include/msvcrt/eh.h
+++ b/include/msvcrt/eh.h
@@ -40,8 +40,8 @@ terminate_function __cdecl set_terminate(terminate_function func);
unexpected_function __cdecl set_unexpected(unexpected_function func);
_se_translator_function __cdecl set_se_translator(_se_translator_function func);
-void __cdecl terminate(void);
-void __cdecl unexpected(void);
+void __cdecl terminate(void) DECLSPEC_NORETURN;
+void __cdecl unexpected(void) DECLSPEC_NORETURN;
#include <poppack.h>
diff --git a/include/msvcrt/process.h b/include/msvcrt/process.h
index 3cae112..4d286f6 100644
--- a/include/msvcrt/process.h
+++ b/include/msvcrt/process.h
@@ -30,8 +30,8 @@ typedef unsigned int (__stdcall *_beginthreadex_start_routine_t)(void *);
uintptr_t __cdecl _beginthread(_beginthread_start_routine_t,unsigned int,void*);
uintptr_t __cdecl _beginthreadex(void*,unsigned int,_beginthreadex_start_routine_t,void*,unsigned int,unsigned int*);
intptr_t __cdecl _cwait(int*,intptr_t,int);
-void __cdecl _endthread(void);
-void __cdecl _endthreadex(unsigned int);
+void __cdecl _endthread(void) DECLSPEC_NORETURN;
+void __cdecl _endthreadex(unsigned int) DECLSPEC_NORETURN;
intptr_t WINAPIV _execl(const char*,const char*,...);
intptr_t WINAPIV _execle(const char*,const char*,...);
intptr_t WINAPIV _execlp(const char*,const char*,...);
@@ -52,9 +52,9 @@ intptr_t __cdecl _spawnvpe(int,const char*,const char* const *,const char* cons
void __cdecl _c_exit(void);
void __cdecl _cexit(void);
-void __cdecl _exit(int);
-void __cdecl abort(void);
-void __cdecl exit(int);
+void __cdecl _exit(int) DECLSPEC_NORETURN;
+void __cdecl abort(void) DECLSPEC_NORETURN;
+void __cdecl exit(int) DECLSPEC_NORETURN;
int __cdecl system(const char*);
#ifndef _WPROCESS_DEFINED
diff --git a/include/msvcrt/stdlib.h b/include/msvcrt/stdlib.h
index bc7c86e..3454b17 100644
--- a/include/msvcrt/stdlib.h
+++ b/include/msvcrt/stdlib.h
@@ -184,9 +184,9 @@ errno_t __cdecl _ui64toa_s(unsigned __int64,char*,size_t,int);
char* __cdecl _ultoa(__msvcrt_ulong,char*,int);
errno_t __cdecl _ultoa_s(__msvcrt_ulong,char*,size_t,int);
-void __cdecl _Exit(int);
-void __cdecl _exit(int);
-void __cdecl abort(void);
+void __cdecl _Exit(int) DECLSPEC_NORETURN;
+void __cdecl _exit(int) DECLSPEC_NORETURN;
+void __cdecl abort(void) DECLSPEC_NORETURN;
int __cdecl abs(int);
int __cdecl atexit(void (__cdecl *)(void));
double __cdecl atof(const char*);
@@ -200,7 +200,7 @@ div_t __cdecl div(int,int);
ldiv_t __cdecl ldiv(__msvcrt_long,__msvcrt_long);
#endif
lldiv_t __cdecl lldiv(__int64,__int64);
-void __cdecl exit(int);
+void __cdecl exit(int) DECLSPEC_NORETURN;
void __cdecl free(void*);
char* __cdecl getenv(const char*);
__msvcrt_long __cdecl labs(__msvcrt_long);
More information about the wine-cvs
mailing list