From 791743976e3366e9d3bf8f3b247280bf04c12baf Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Wed, 9 Dec 2015 11:37:33 +0100 Subject: [PATCH] Revert "Cleanup of osdcomm.h (nw)" This reverts commit 1d40aecb585e8dd1fedefdd35a833c66fc2a1b96. --- src/lib/util/corealloc.cpp | 5 +-- src/osd/osdcomm.h | 62 ++++++++++++++++++++++++++++++-------- 2 files changed, 50 insertions(+), 17 deletions(-) diff --git a/src/lib/util/corealloc.cpp b/src/lib/util/corealloc.cpp index 9e25af63b10..9ca7af380d3 100644 --- a/src/lib/util/corealloc.cpp +++ b/src/lib/util/corealloc.cpp @@ -27,10 +27,7 @@ // define this to zap memory to a fixed non-0 value before freeing //#define OVERWRITE_FREED_MEMORY -// compatibility with non-clang compilers -#ifndef __has_feature - #define __has_feature(x) 0 -#endif + //************************************************************************** // CONSTANTS diff --git a/src/osd/osdcomm.h b/src/osd/osdcomm.h index b00c74869f7..9465be7477c 100644 --- a/src/osd/osdcomm.h +++ b/src/osd/osdcomm.h @@ -16,7 +16,7 @@ #include #include -#include + /*************************************************************************** COMPILER-SPECIFIC NASTINESS @@ -29,23 +29,38 @@ /* Some optimizations/warnings cleanups for GCC */ -#if defined(__GNUC__) +#if defined(__GNUC__) && (__GNUC__ >= 3) #define ATTR_UNUSED __attribute__((__unused__)) #define ATTR_NORETURN __attribute__((noreturn)) #define ATTR_PRINTF(x,y) __attribute__((format(printf, x, y))) +#define ATTR_MALLOC __attribute__((malloc)) +#define ATTR_PURE __attribute__((pure)) #define ATTR_CONST __attribute__((const)) #define ATTR_FORCE_INLINE __attribute__((always_inline)) #define ATTR_NONNULL(...) __attribute__((nonnull(__VA_ARGS__))) #define ATTR_DEPRECATED __attribute__((deprecated)) +/* not supported in GCC prior to 4.4.x */ +#if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4) #define ATTR_HOT __attribute__((hot)) #define ATTR_COLD __attribute__((cold)) +#else +#define ATTR_HOT +#define ATTR_COLD +#endif #define UNEXPECTED(exp) __builtin_expect(!!(exp), 0) #define EXPECTED(exp) __builtin_expect(!!(exp), 1) #define RESTRICT __restrict__ +#define SETJMP_GNUC_PROTECT() (void)__builtin_return_address(1) #else #define ATTR_UNUSED +#if defined(_MSC_VER) && (_MSC_VER >= 1200) #define ATTR_NORETURN __declspec(noreturn) +#else +#define ATTR_NORETURN +#endif #define ATTR_PRINTF(x,y) +#define ATTR_MALLOC +#define ATTR_PURE #define ATTR_CONST #define ATTR_FORCE_INLINE __forceinline #define ATTR_NONNULL(...) @@ -55,6 +70,7 @@ #define UNEXPECTED(exp) (exp) #define EXPECTED(exp) (exp) #define RESTRICT +#define SETJMP_GNUC_PROTECT() do {} while (0) #endif @@ -63,28 +79,43 @@ FUNDAMENTAL TYPES ***************************************************************************/ +/* These types work on most modern compilers; however, OSD code can + define their own by setting OSD_TYPES_DEFINED */ + +#ifndef OSD_TYPES_DEFINED /* 8-bit values */ -using UINT8 = uint8_t; -using INT8 = int8_t; +typedef unsigned char UINT8; +typedef signed char INT8; /* 16-bit values */ -using UINT16 = uint16_t; -using INT16 = int16_t; +typedef unsigned short UINT16; +typedef signed short INT16; /* 32-bit values */ -using UINT32 = uint32_t; -using INT32 = int32_t; +#ifndef _WINDOWS_H +typedef unsigned int UINT32; +typedef signed int INT32; +#endif /* 64-bit values */ -using UINT64 = uint64_t; -using INT64 = int64_t; +#ifndef _WINDOWS_H +#ifdef _MSC_VER +typedef signed __int64 INT64; +typedef unsigned __int64 UINT64; +#else +__extension__ typedef unsigned long long UINT64; +__extension__ typedef signed long long INT64; +#endif +#endif + +#endif /* pointer-sized values */ #ifdef PTR64 -using FPTR = uint64_t; +typedef UINT64 FPTR; #else -using FPTR = uint32_t; +typedef UINT32 FPTR; #endif @@ -134,7 +165,7 @@ using FPTR = uint32_t; /* MINGW has adopted the MSVC formatting for 64-bit ints as of gcc 4.4 */ -#if defined(__MINGW32__) || defined(_MSC_VER) +#if (defined(__MINGW32__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))) || defined(_MSC_VER) #define I64FMT "I64" #else #define I64FMT "ll" @@ -187,6 +218,11 @@ using FPTR = uint32_t; #define LITTLE_ENDIANIZE_INT64(x) (FLIPENDIAN_INT64(x)) #endif /* LSB_FIRST */ +// compatibility with non-clang compilers +#ifndef __has_feature + #define __has_feature(x) 0 +#endif + #ifdef _MSC_VER #include typedef ptrdiff_t ssize_t;