summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2015-12-09 11:37:33 +0100
committer Miodrag Milanovic <mmicko@gmail.com>2015-12-09 11:37:33 +0100
commit791743976e3366e9d3bf8f3b247280bf04c12baf (patch)
tree9deee13bbb812a8d11c04570248a67cb2ef3e93b
parent1d40aecb585e8dd1fedefdd35a833c66fc2a1b96 (diff)
Revert "Cleanup of osdcomm.h (nw)"
This reverts commit 1d40aecb585e8dd1fedefdd35a833c66fc2a1b96.
-rw-r--r--src/lib/util/corealloc.cpp5
-rw-r--r--src/osd/osdcomm.h62
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 <stdio.h>
#include <string.h>
-#include <cstdint>
+
/***************************************************************************
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 <malloc.h>
typedef ptrdiff_t ssize_t;