From 535246269d4a7d8338320f8e6666ca887718c5d0 Mon Sep 17 00:00:00 2001 From: Brent Cook Date: Sat, 9 Feb 2019 09:03:13 -0600 Subject: [PATCH] add __dead__ annotation support --- CMakeLists.txt | 1 + include/compat/sys/types.h | 8 ++++++++ m4/check-os-options.m4 | 1 + 3 files changed, 10 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4d54ada..a6a7554 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,6 +49,7 @@ endif() if(CMAKE_SYSTEM_NAME MATCHES "OpenBSD") add_definitions(-DHAVE_ATTRIBUTE__BOUNDED__) + add_definitions(-DHAVE_ATTRIBUTE__DEAD__) endif() if(CMAKE_SYSTEM_NAME MATCHES "Linux") diff --git a/include/compat/sys/types.h b/include/compat/sys/types.h index dec09e3..4967843 100644 --- a/include/compat/sys/types.h +++ b/include/compat/sys/types.h @@ -49,6 +49,14 @@ typedef SSIZE_T ssize_t; # define __bounded__(x, y, z) #endif +#if !defined(HAVE_ATTRIBUTE__DEAD) && !defined(__dead) +#ifdef _MSC_VER +#define __dead __declspec(noreturn) +#else +#define __dead __attribute__((__noreturn__)) +#endif +#endif + #ifdef _WIN32 #define __warn_references(sym,msg) #else diff --git a/m4/check-os-options.m4 b/m4/check-os-options.m4 index 445bd74..84116a2 100644 --- a/m4/check-os-options.m4 +++ b/m4/check-os-options.m4 @@ -98,6 +98,7 @@ char buf[1]; getentropy(buf, 1); HOST_OS=openbsd HOST_ABI=elf AC_DEFINE([HAVE_ATTRIBUTE__BOUNDED__], [1], [OpenBSD gcc has bounded]) + AC_DEFINE([HAVE_ATTRIBUTE__DEAD], [1], [OpenBSD gcc has __dead]) ;; *mingw*) HOST_OS=win